1.前半部分(function(){ })
(function(){ }):函数的定义
表示一个匿名函数。
function(arg){...}定义了一个参数为arg的匿名函数。所以(function(w) { ...})即为一个参数为w的匿名函数。
2.后半部分(window)
(window):传参并执行
3.立即执行函数 IIFE(Immediately-Invoked Function Expression)
有时需要在定义函数之后,立即调用该函数。这种函数就叫做立即执行函数,全称为立即调用的函数表达式IIFE(Imdiately Invoked Function Expression).
(function(arg) {...})(parameter),是立即执行函数
IIFE(Immediately-Invoked Function Expression),用以创建独立隔绝的定义域。这一举措可防止全局命名空间被污染。这种模式是非常有用的,因为它为你初始化代码提供了一个作用域的沙箱;
立即执行的函数表达式的执行括号应该写在外包括号内。虽然写在内还是写在外都是有效的,但写在内使得整个表达式看起来更像一个整体,因此推荐这么做。
不推荐
(function(){})();
推荐
(function(){}());
立即执行函数的更详细说明可参见:
https://segmentfault.com/a/1190000007569312?_ea=1386755
http://www.jb51.net/article/50967.htm
http://blog.csdn.net/qq838419230/article/details/8030078