github
上看到的代码:
(function (window) {
// declare
var myApp = function () {
return;
};
// your sdk init function
myApp.prototype.init = function () {
// ...
};
// define your namespace myApp
window.myApp = new myApp();
})(window, undefined);
请问第一个括号里的(window)
、和末尾的(window, undefined)
分别有什么含义?一般有什么作用呢?
(function (window) {})(window, undefined); 您可以把它看成()(),而()()就是我们常见的匿名函数自执行的写法。
比如:
上面的代码,当页面加载时,就会自动打印出:Hello World!
为什么会这么写?
匿名函数自执行(function() {})()主要为了避免变量的全局污染;该写法大多用于开发插件。比如jquery插件。。。
而末尾的参数为实参,在这里接受window对象(浏览器环境),而function后面的圆括号中的window为局部变量,不是全局的window对象,这样写可以提高js性能,减少作用域链查询时间。(如果在函数体内多次使用到window对象,那么把window对象当着实参穿进去,是十分必要的;如果函数内部不需要,那么就无需传递该参数。);
undefined的答案我修改下,之前可能有点错误,看来绿皮书又要重新看了
参考链接:https://segmentfault.com/q/10...