为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2019-04-08 11:16:43
(function(window,$,undefined){play=function(){$("#demo").val("Thisisademo.");}window.wbLogin=play;})(window,jQuery);像上边这样的代码为什么要把window,jQuery对象传进去
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

为什么要传入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不可改变。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 529 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信