开发者社区> 问答> 正文

匿名函数和call以及return的问题. ().call(this);

前几天在一个著名网站看到一个有趣的效果,然后自己着手试了试.之后看了页面的原码,被代码的简短和精细吓到(也可能是少见多怪).
代码大致如下:

(function() {
    $(function() {
        return $(".XXXX-XX").click(function() {
            return $(this).parent(".XXX").toggleClass("new");
        });
    });
}).call(this);

虽然代码的写法都很熟悉,可是仔细看了之后又觉得好陌生.问题集中在:
1.(function(){/**function body**/}).call(this)是怎么执行的?这样写有什么好处?

  1. 2个return的作用,为什么要return?,return了什么?.

展开
收起
云栖技术 2016-05-25 09:10:47 1975 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!

    (function(){/**function body**/}).call(this)是怎么执行的?这样写有什么好处?
    这是Javascript的自执行函数写法, 函数声明后立即执行. 并且设置函数执行时context为this, 这里的this因执行环境会有所不同, 浏览器环境应该是window.
    但是看这代码没必要用个call(this), 感觉下面的写法就可以了:

    (function() {
        $(function() {
            return $(".XXXX-XX").click(function() {
                return $(this).parent(".XXX").toggleClass("new");
            });
        });
    })();

    2个return的作用,为什么要return?,return了什么?.
    两个return也是可以不存在的, 不管里return了什么, 没人接收你的return值, 何必return呢?

    2019-07-17 19:13:24
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载