猿问

javascript自执行函数为什么要把windows作为参数传进去

(function(window,$,undefined){
play=function(){
$("#demo").val("Thisisademo.");
}
window.wbLogin=play;
})(window,jQuery);
像上边这样的代码为什么要把window,jQuery对象传进去
Cats萌萌
浏览 531回答 2
2回答

墨色风雨

为什么要传入jQuery通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。这点非常有用也是一个JS框架必须支持的功能,jQuery被应用在成千上万的JavaScript程序中,必须确保jQuery创建的变量不能和导入他的程序所使用的变量发生冲突。为什么要传入window通过传入window变量,使得window由全局变量变为局部变量,当在jQuery代码块中访问window时,不需要将作用域链回退到顶层作用域,这样可以更快的访问window;这还不是关键所在,更重要的是,将window作为参数传入,可以在压缩代码时进行优化,看看jquery-1.6.1.min.js:(function(a,b){})(window);//window被优化为a为什么要传入undefined在自调用匿名函数的作用域内,确保undefined是真的未定义。因为undefined能够被重写,赋予新的值。undefined="nowit'sdefined";alert(undefined);浏览器测试结果:(感谢@依云的建议,添加浏览器版本号)浏览器测试结果结论ie8nowit'sdefined可以改变firefox22undefined不能改变chrome31undefined不能改变opera12undefined不能改变我的IE最高版本是8,不知道高版本如何。除了IE,其他的浏览器都默认undefined不可改变。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答