两种写法的效果都一样:声明一个匿名函数并且立即调用之;
如果需要传参,那就写在圆括号里:例如:
(function(param){/*代码体*/})(param);
多个参数用逗号分隔:
(function(p1,p2){/*代码体*/})(p1,p2);
多举几个我见过的别人的写法:
一个依赖zepto或者jQuery的js插件:
(function($){/*...*/})(window.Zepto || window.jQuery);
有2个参数的:
(function(win, doc){/*...*/}(window, document));
1
|
$( function (){...}); |
的完整写法是:
1
|
$(docunemt).ready( function (){...}); |
意思是在DOM加载完毕后执行ready()方法。
1
|
( function ($){...})(jQuery); |
等同于下面的写法:
1
2
|
var fun = function (params){....}; fun(jQuery); |
是立即执行匿名函数fun,这里参数是jQuery。这个写法主要目的是保证jQuery不与其他类库或变量有冲突。
1
|
( function ($){....})(jQuery); |
在定义后就立刻执行, 在执行顺序上可能要先于
1
|
$( function (){}); |