JavaScript 變數汙染
在強型別語言中,可以有效的防止變數汙染,因為在同一作用域內,不允許重複宣告同名變數。
但是在javascript中並沒有這個強制要求。
當然在ES6中也不允許使用let和const在同一作用域內宣告重複變數和常量。
暫時先不考慮ES6的let和const;在javascript中,如果宣告一個變數以後,又在同一作用於宣告重複的變數,那麼就會忽略後面的宣告,如果後面宣告的變數賦值,那麼這個值會被賦值給第一個宣告的變數。所以如果在同一個作用域內已經宣告瞭一個變數,那麼後面再投放同一個名稱的變數的話,就會產生一些列的問題。程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼var webName = "螞蟻部落"; function done() { console.log(webName); } var webName = "antzone"; done();
上面程式碼中,輸出結果是"antzone",說明產生了汙染。
這種現象尤其是在團隊開發,且命名比較複雜的時候容易產生。
下面簡單介紹一下如何避免此種問題:
使用匿名函式模擬塊級作用域:
[JavaScript] 純文字檢視 複製程式碼(function(){ var dom=document.getElementById("test"); dom.addEventListener("click",function(){ console.log("www.softwhy.com"); },false) })()
如果僅僅是為了完成某個單純的操作,使用匿名自執行函式是個良好的選擇。[
函式執行完畢之後,記憶體釋放,變數不會對外界產生汙染。
使用名稱空間的方式:
[JavaScript] 純文字檢視 複製程式碼var antzoneObj={}; (function (ant) { var dom=document.getElementById("antzone"); dom.addEventListener("click",function(){ console.log("www.softwhy.com"); },false); ant.age=4; ant.show = function () { console.log("螞蟻部落"); } })(antzoneObj) antzoneObj.show();
相關文章
- JavaScript變數JavaScript變數
- JavaScript原型鏈汙染探討JavaScript原型
- JavaScript 宣告變數JavaScript變數
- JavaScript變數提升JavaScript變數
- javascript 變數物件JavaScript變數物件
- JavaScript之變數物件JavaScript變數物件
- JavaScript 3/30: CSS變數JavaScriptCSS變數
- JavaScript - 變數、值、型別JavaScript變數型別
- JavaScript基礎(二)變數JavaScript變數
- 關於JavaScript變數提升JavaScript變數
- Javascript 變數生命週期JavaScript變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- JavaScript中的安全變數引用JavaScript變數
- JavaScript之變數及作用域JavaScript變數
- JavaScript 回顧學習:變數JavaScript變數
- JavaScript中變數和作用域JavaScript變數
- [譯] JavaScript 中的私有變數JavaScript變數
- Javascript 函式和變數提升JavaScript函式變數
- JavaScript 變數的作用域鏈JavaScript變數
- JavaScript筆記3_變數JavaScript筆記變數
- JavaScript2:變數、陣列、字串JavaScript變數陣列字串
- JavaScript 變數與函式宣告前置JavaScript變數函式
- 現代 JavaScript 的變數作用域JavaScript變數
- javascript學習筆記,二、變數JavaScript筆記變數
- javascript全域性變數的使用注意JavaScript變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 表單驗證,為避免全域性汙染,少定義全域性變數寫法變數
- 在 Laravel 中將 PHP 變數轉化為 JavaScript 變數並輸出LaravelPHP變數JavaScript
- 1.11 JavaScript2:變數、陣列、字串JavaScript變數陣列字串
- javascript之變數提升與函式提升JavaScript變數函式
- JavaScript判斷兩個變數是否相等JavaScript變數
- JavaScript變數型別檢測總結JavaScript變數型別
- JavaScript 判斷變數是否是函式JavaScript變數函式
- javascript變數的宣告以及命名規則JavaScript變數
- Javascript基礎:變數型別轉換JavaScript變數型別
- 死磕JavaScript-鬆散型別、js變數儲存模型、變數提升JavaScript型別JS變數模型
- 閉包:私有化變數 《JavaScript高程3》 《JavaScript忍者祕籍》變數JavaScript
- javascript中如何判斷變數的型別?JavaScript變數型別
- JavaScript變數與資料型別詳解JavaScript變數資料型別