Is passing the window object to an IIFE optional?
本问题已经有最佳答案,请猛点这里访问。
以下示例之间有什么区别吗?
例1:
1 2 3 4 | (function (window) { 'use strict'; console.log(window) })(window); |
例2:
1 2 3 4 | (function () { 'use strict'; console.log(window) })(); |
传递窗口对象是否可选?
#1并没有多大意义。
#1使用的模式主要用于捕获稍后可能被其他代码更改的内容,例如:
1 2 3 4 5 6 7 8 | var x = 1; (function(x) { setTimeout(function() { console.log("inside, x =" + x); }, 100); })(x); x = 2; console.log("outside, x =" + x); |
...或者为了获得方便的简写名称:
1 2 3 4 5 | (function(d) { var div = d.createElement("div"); div.innerHTML ="Hi"; d.body.appendChild(div); })(document); |
如果
1 2 3 | (function(u) { console.log(typeof u); //"undefined" })(/*Note there's no argument passed*/); |
现在