jquery源码中,
(function ($) { ....... } (jQuery));
这种写法的意思是,好处是?
这样可以声明一个匿名函数:
function() {}
这样就可以声明后直接执行它:
(function() {})();
再加上参数:
(function($) {})(jQuery);
也就相当于:
function foo($) { } foo(jQuery);
但区别在于, 前者没有在全局作用域产生 foo 这个变量.
大家都说到点子上了,我在补充下,以帮助理解。
var a = function(arg){ //code }
/*这里调用a*/
a(arg);
/*也可以这么写*/
(a)(arg);
/*a替换成上面声明的值*/
(function(arg){ //code })(arg)
这么做,声明匿名函数,防止污染全局变量。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
拿匿名函数做类似命名空间, 避免污染全局或者被全局污染
http://jsfiddle.net/uVFh7/