前几天在一个著名网站看到一个有趣的效果,然后自己着手试了试.之后看了页面的原码,被代码的简短和精细吓到(也可能是少见多怪).
代码大致如下:
(function() {
$(function() {
return $(".XXXX-XX").click(function() {
return $(this).parent(".XXX").toggleClass("new");
});
});
}).call(this);
虽然代码的写法都很熟悉,可是仔细看了之后又觉得好陌生.问题集中在:
1. (function(){/**function body**/}).call(this)
是怎么执行的?这样写有什么好处?
2. 2个return
的作用,为什么要return
?,return
了什么?.
这段代码极有可能是由 coffee 编译过来的 特点是外层的包裹匿名函数和看似没必要的
return
匿名函数包裹是为了命名空间 防止全局变量污染
看似没必要的
return
是因为 coffee 函数中如果不手动指定 会默认return
最后一行代码