1,作用:防止變數汙染全域性
// 現在你和同事開發同乙個模組,然後你發現你們變數名大部分相同,為了管理變數,防止汙染全域性,可以閉包來解決這個問題
// 開發規範:init代表著入口、初始化的意思
let name = 'xyz';
let init = (function ()
return function ()
}());
let initxie = (function ()
return function ()
}());
init();
initxie()
————————————————
2. js中的內部函式可以訪問外部函式的變數,稱之為閉包
作用:私有變數
function privatevariable() ;this.getvalue = function() ;
}var x = new privatevariable();
x.setname("abcd");
console.log(x.value); //undefined
console.log(x.getvalue ()); //abcd
IIFE為什麼不會汙染全域性變數
在開發過程中見到的iife,函式表示式都是匿名的,如果我們把它寫成命名函式表示式,那全域性作用域中豈不是多了乙個變數,這樣又怎麼能保證不會汙染全域性變數呢?通常我們在談論iife時,都是在談論它的用法,模組化,閉包等等,卻少有提及它為什麼可以拿來做模組化,為什麼不會汙染全域性變數。本文雖然是在說ii...
防止全域性變數重複定義
問題 在.h檔案中定義了全域性變數 並用 ifndef identifier h define identifier h endif但是依然出現重複定義問題 分析 ifndef這套條件編譯是為了防止同乙個.c檔案中包含多個相同.h檔案的 比如有乙個.c檔案包含了a.h,a.h又包含了b.h,那麼當你...
全域性變數汙染什麼的最討厭了
用匿名函式將指令碼包起來 使用多級命名空間。這第二條 使用多級命名空間 這個,我覺得並不是很完美的好主意。因為如果級數太多的話會造成變數名字變得長的一逼。沒有做過任何優化的滿目瘡痍的 a.js 和 b.js 都有全域性變數window.a,導致衝突,全域性變數屬於window作用域下的。通過匿名函式...