JS 关于(function( window, undefined ) {})(window)写法的理解
生活随笔
收集整理的這篇文章主要介紹了
JS 关于(function( window, undefined ) {})(window)写法的理解
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
(function( window, undefined ) {})(window); 這個(gè),為什么要將window和undefined作為參數(shù)傳給它? (function( $, undefined ) {})(jQuery); 同理 因?yàn)?ecmascript 執(zhí)行JS代碼是從里到外,因此把全局變量window或jQuery對(duì)象傳進(jìn)來(lái),就避免了到外層去尋找,提高效率。undefined在老一輩的瀏覽器是不被支持的,直接使用會(huì)報(bào)錯(cuò),js框架要考慮到兼容性,因此增加一個(gè)形參undefined。 還有,不要用window.undefined傳遞給形參,有可能window.undefined被其他人修改了,最好就是甚么都不傳,形參的undefined就是真正的undefined了。 Js代碼 :? var undefined = 8; ? (function( window ) { ?? alert(window.undefined); // 8 ? alert(undefined); // 8 ? })(window); ? 與 Js代碼 :? var undefined = 8; ? (function( window, undefined ) { ?? alert(window.undefined); ?// 8 ? alert(undefined); // 此處undefined參數(shù)為局部的名稱為undefined變量,值為undefined ? })(window); ? 區(qū)分上述兩種方式:第一種每個(gè)語(yǔ)句都要去找一次window。第二種將window作為參數(shù)傳遞過(guò)去,是的不要每個(gè)語(yǔ)句都去找window,應(yīng)該是提高了效率。 所以后者,就算外面的人把 undefined 定義了,里面的 undefined 依然不受影響。大概是為了最大程度防止外界的變量定義對(duì)所做封裝的內(nèi)部造成影響吧。 Js代碼: ? //方式一 ? (function(undefined ) { ? window.property1 = ……; ? window.property2 = ……; ? …… ? })(); ? //方式二 ? (function( window, undefined ) { ? ... // code goes here ? })(window); ? //方式三 ? (function(undefined ) { ? var tmp = window; ? tmp.property1 = ……; ? tmp.property2 = ……; ? …… ? })(); ? 方式一的效率明顯最低,方式二和方式三應(yīng)該差不多。將window作為參數(shù)傳遞進(jìn)去就可以讓代碼里面的語(yǔ)句可以直接用參數(shù)中的window,而不用再去找最外層的對(duì)象。假如要在函數(shù)中為window再設(shè)置 100000個(gè)屬性,用參數(shù)傳遞過(guò)去只需要找一次最外層對(duì)象。不用參數(shù)傳遞,用到window的語(yǔ)句都要去找一次最外層對(duì)象。
轉(zhuǎn)載于:https://www.cnblogs.com/barryli/p/3188805.html
總結(jié)
以上是生活随笔為你收集整理的JS 关于(function( window, undefined ) {})(window)写法的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flex容器拖动(Borderconta
- 下一篇: Windows Serer 2003 配