JS学习笔记:JS 的function( window, undefined …
2018-09-18 06:39:25来源:博客园 阅读 ()
JS 的function( window, undefined ) {}(window)写法
(function( window, undefined ) {})(window);
这个,为什么要将window和undefined作为参数传给它?
(function( $, undefined ) {})(jQuery); 同理
因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined。
还有,不要用window.undefined传递给形参,有可能window.undefined被其他人修改了,最好就是甚么都不传,形参的undefined就是真正的undefined了。
1 var undefined = 8; 2 (function( window ) { 3 alert(window.undefined); // 8 4 alert(undefined); // 8 5 })(window);
1 var undefined = 8; 2 (function( window, undefined ) { 3 alert(window.undefined); // 8 4 alert(undefined); // 此处undefined参数为局部的名称为undefined变量,值为undefined 5 })(window);
区分上述两种方式:第一种每个语句都要去找一次window。第二种将window作为参数传递过去,是的不要每个语句都去找window,应该是提高了效率。 所以后者,就算外面的人把 undefined 定义了,里面的 undefined 依然不受影响。大概是为了最大程度防止外界的变量定义对所做封装的内部造成影响吧。
原文参考自博客https://www.cnblogs.com/ada-zheng/p/4174159.html
1 //方式一 2 (function(undefined ) { 3 window.property1 = ……; 4 window.property2 = ……; 5 …… 6 })(); 7 //方式二 8 (function( window, undefined ) { 9 ... // code goes here 10 11 })(window); 12 //方式三 13 (function(undefined ) { 14 var tmp = window; 15 tmp.property1 = ……; 16 tmp.property2 = ……; 17 …… 18 })();
方式一的效率明显最低,方式二和方式三应该差不多。将window作为参数传递进去就可以让代码里面的语句可以直接用参数中的window,而不用再去找最外层的对象。假如要在函数中为window再设置 100000个属性,用参数传递过去只需要找一次最外层对象。不用参数传递,用到window的语句都要去找一次最外层对象。
function ($, undefined){ })(jQuery)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Jquery插件写法笔记整理 2020-03-29
- 如何用javascript连接access数据库 2020-03-20
- 在JavaScript中尽可能使用局部变量的原因 2020-03-08
- JsEasy的介绍 2019-10-25
- DEFER的使用方法 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash