您的位置:首页 > 其它

关于(function( window, undefined ) {})(window)写法的理解

2014-11-17 17:59 471 查看
(function( window, undefined ) {})(window);

这个,为什么要将window和undefined作为参数传给它?

(function( $, undefined ) {})(jQuery); 同理

因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined。

还有,不要用window.undefined传递给形参,有可能window.undefined被其他人修改了,最好就是甚么都不传,形参的undefined就是真正的undefined了。

Js代码 :
<span style="font-size:14px;">var undefined = 8;
(function( window ) {
alert(window.undefined); // 8
alert(undefined); // 8
})(window); </span>


<span style="font-size:14px;">
var undefined = 8;
(function( window, undefined ) {
alert(window.undefined);  // 8
alert(undefined); // 此处undefined参数为局部的名称为undefined变量,值为undefined
})(window);  </span>


区分上述两种方式:第一种每个语句都要去找一次window。第二种将window作为参数传递过去,是的不要每个语句都去找window,应该是提高了效率。 所以后者,就算外面的人把 undefined 定义了,里面的 undefined 依然不受影响。大概是为了最大程度防止外界的变量定义对所做封装的内部造成影响吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: