摘要:原則用匿名函數將腳本包起來使用多級命名空間。看這把沒有寫了吧就是這么任性,上面的那個寫了的也絕逼不改使用匿名函數通過匿名函數改變了和中的變量的作用域,使得他們都不再是全局變量了,但是在中無法訪問在中的變量,換而言之,他們之間沒辦法通信了。
原則
用匿名函數將腳本包起來;
使用多級命名空間。
這第二條“使用多級命名空間”這個,我覺得并不是很完美的好主意。因為如果級數太多的話會造成變量名字變得長的一逼。
改進過程 原始代碼沒有做過任何優化的滿目瘡痍的代碼。a.js 和 b.js 都有全局變量 window.a ,導致沖突,全局變量屬于 window 作用域下的。
//a.js //b.js使用匿名函數
通過匿名函數改變了a.js 和 b.js 中的變量 a 的作用域,使得他們都不再是全局變量了,但是在 b.js 中無法訪問在 a.js 中的變量 a, 換而言之,他們之間沒辦法通信了。
//a.js (function() { var a = 123, b = "hello world"; })(); //b.js (function() { var a, c = "abc"; })();使用全局變量進行通信
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 這種全局全局變量作為通信的媒介其實并不是一個好辦法,這樣做會導致全局變量越來越多,反而不好維護。
使用命名空間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 的基礎上使用命名空間的方式進行拓展。這里給命名空間起名字也需要很講究,好的命名規則會對團隊協同合作有很大的幫助。具體的命名方式待我賣個關子,以后再說。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85906.html
摘要:不在任何函數內聲明的變量為全局變量。加變成一個函數表達式,解釋器運行創建一個匿名的函數表達式閉包終于到閉包了。 函數的實參和形參 可選形參 if(a === undefined) a = []; 等價于 a = a || []; 這兩句是完全等價的,只不過后者需要提前聲明a而已如果參數沒有傳入,其余的填充undefined可選的形式參數:通過注釋/optional/來強調參數可選,并且...
摘要:目前來看,團隊內部前端項目已全面實施組件化開發。層疊樣式保佑不要污染別的在前端,一般一個組件必須要有骨架和裝飾的以及邏輯。事件綁定條件判斷秒后改變,會自動變更。循環姓名年齡增加修改移除的變更也能監聽到,能夠自動觸發的變更。 目前來看,團隊內部前端項目已全面實施組件化開發。組件化的好處太多,如:按需加載、可復用、易維護、可擴展、少挖坑、不改組件代碼直接切成服務器端渲染(如Nuclear組...
摘要:沒有聲明的情況和都能夠聲明塊級作用域,用法和是類似的,的特點是不會變量提升,而是被鎖在當前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時死區的意思是在當前作用域的塊內,在聲明變量前的區域叫做臨時死區。 本章涉及3個知識點,var、let、const,現在讓我們了解3個關鍵字的特性和使用方法。 var JavaScript中,我們通常說的作用域是函數作用域,使用var聲...
閱讀 3574·2019-08-30 15:55
閱讀 1373·2019-08-29 16:20
閱讀 3656·2019-08-29 12:42
閱讀 2661·2019-08-26 10:35
閱讀 1010·2019-08-26 10:23
閱讀 3405·2019-08-23 18:32
閱讀 897·2019-08-23 18:32
閱讀 2892·2019-08-23 14:55