最近有很多朋友都在問我 閉包是什麼 開始自己也是懵逼的 琢磨了下 才有了了解 下面就為大家簡單的實現以下:
如下:
var a=(function(a))(a);
// to do
console.log(a);
// 定義乙個匿名函式,把a傳遞進去,a是undefined
// 因為匿名函式本身沒有返回值,如果是
var a=(function(a))(a);
console.log(a);// a此時就是1
// 如果要自動執行這個匿名函式的同時又賦值給a,那就應該是這樣的:
var i = 0;// 計數器
var a=(function(a))(a);// 這裡跑一次
a();//被呼叫一次
總的說就是 函式外部訪問函式內部的值 .
從乙個小例子再次理解閉包
function fun var f1 fun f2 fun console.log f1 因為f1 fun 執行 所以f1 f2 都等於 fun return 出的函式 function console.log f2 f1 0 f1 是執行 f1這個函式 i 先執行在相加所以i 0 f1 1 在此...
閉包的乙個坑
閉包的乙個坑 for var i 0 i 5 i 5 上面這個 塊會列印五個5出來,而我們預想的結果是列印 1 2 3 4 5。之所以會這樣,是因為 settimeout 中的 i 是對外層 i 的引用。當 settimeout 的 被解釋的時候,執行時只是記錄了 i 的引用,而不是值。而當 set...
JS閉包的最簡單例子使用
function foo function bar fn 1000 wait hello,closure 將乙個內部函式 名為 timer 傳遞給 settimeout timer 具有涵蓋 wait 作用域 的閉包,因此還保有對變數 message 的引用。wait 執行 1000 毫秒後,它的內...