国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

全局變量污染什么的最討厭了

noONE / 2811人閱讀

摘要:原則用匿名函數(shù)將腳本包起來(lái)使用多級(jí)命名空間。看這把沒有寫了吧就是這么任性,上面的那個(gè)寫了的也絕逼不改使用匿名函數(shù)通過(guò)匿名函數(shù)改變了和中的變量的作用域,使得他們都不再是全局變量了,但是在中無(wú)法訪問(wèn)在中的變量,換而言之,他們之間沒辦法通信了。

原則

用匿名函數(shù)將腳本包起來(lái);

使用多級(jí)命名空間。

這第二條“使用多級(jí)命名空間”這個(gè),我覺得并不是很完美的好主意。因?yàn)槿绻?jí)數(shù)太多的話會(huì)造成變量名字變得長(zhǎng)的一逼。

改進(jìn)過(guò)程 原始代碼

沒有做過(guò)任何優(yōu)化的滿目瘡痍的代碼。a.js 和 b.js 都有全局變量 window.a ,導(dǎo)致沖突,全局變量屬于 window 作用域下的。

//a.js


//b.js
使用匿名函數(shù)

通過(guò)匿名函數(shù)改變了a.js 和 b.js 中的變量 a 的作用域,使得他們都不再是全局變量了,但是在 b.js 中無(wú)法訪問(wèn)在 a.js 中的變量 a, 換而言之,他們之間沒辦法通信了。

//a.js
(function() {
    var a = 123, b = "hello world";
})();

//b.js
(function() {
    var a, c = "abc";
})();
使用全局變量進(jìn)行通信
var str;
//a.js
(function() {
    var a = 123,
    b = "hello world";
    window.str = a;
})();

//b.js
(function() {
    var a, c = "abc";
    alert(window.str);
})();

使用 window.str 這種全局全局變量作為通信的媒介其實(shí)并不是一個(gè)好辦法,這樣做會(huì)導(dǎo)致全局變量越來(lái)越多,反而不好維護(hù)。

使用命名空間
var GLOBAL = {};
//a.js
(function() {
    var a = 123,
    b = "hello world";
    GLOBAL.A.a = a;
})();

//b.js
(function() {
    var a, c = "abc";
    alert(GLOBAL.A.a);
})();

使用單一的全局變量 GlOBAL ,匿名空間里需要保存的屬性都在全局變量 GLOBAL 的基礎(chǔ)上使用命名空間的方式進(jìn)行拓展。這里給命名空間起名字也需要很講究,好的命名規(guī)則會(huì)對(duì)團(tuán)隊(duì)協(xié)同合作有很大的幫助。具體的命名方式待我賣個(gè)關(guān)子,以后再說(shuō)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/85906.html

相關(guān)文章

  • 函數(shù)的實(shí)參 函數(shù)的形參 閉包 js

    摘要:不在任何函數(shù)內(nèi)聲明的變量為全局變量。加變成一個(gè)函數(shù)表達(dá)式,解釋器運(yùn)行創(chuàng)建一個(gè)匿名的函數(shù)表達(dá)式閉包終于到閉包了。 函數(shù)的實(shí)參和形參 可選形參 if(a === undefined) a = []; 等價(jià)于 a = a || []; 這兩句是完全等價(jià)的,只不過(guò)后者需要提前聲明a而已如果參數(shù)沒有傳入,其余的填充undefined可選的形式參數(shù):通過(guò)注釋/optional/來(lái)強(qiáng)調(diào)參數(shù)可選,并且...

    huhud 評(píng)論0 收藏0
  • 漫談Nuclear Web組件化入門篇

    摘要:目前來(lái)看,團(tuán)隊(duì)內(nèi)部前端項(xiàng)目已全面實(shí)施組件化開發(fā)。層疊樣式保佑不要污染別的在前端,一般一個(gè)組件必須要有骨架和裝飾的以及邏輯。事件綁定條件判斷秒后改變,會(huì)自動(dòng)變更。循環(huán)姓名年齡增加修改移除的變更也能監(jiān)聽到,能夠自動(dòng)觸發(fā)的變更。 目前來(lái)看,團(tuán)隊(duì)內(nèi)部前端項(xiàng)目已全面實(shí)施組件化開發(fā)。組件化的好處太多,如:按需加載、可復(fù)用、易維護(hù)、可擴(kuò)展、少挖坑、不改組件代碼直接切成服務(wù)器端渲染(如Nuclear組...

    VPointer 評(píng)論0 收藏0
  • 《深入理解ES6》筆記——塊級(jí)作用域綁定(1)

    摘要:沒有聲明的情況和都能夠聲明塊級(jí)作用域,用法和是類似的,的特點(diǎn)是不會(huì)變量提升,而是被鎖在當(dāng)前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時(shí)死區(qū)的意思是在當(dāng)前作用域的塊內(nèi),在聲明變量前的區(qū)域叫做臨時(shí)死區(qū)。 本章涉及3個(gè)知識(shí)點(diǎn),var、let、const,現(xiàn)在讓我們了解3個(gè)關(guān)鍵字的特性和使用方法。 var JavaScript中,我們通常說(shuō)的作用域是函數(shù)作用域,使用var聲...

    2bdenny 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<