實現可重用的區域性變數,且保護其不受汙染的機制。
外層函式包裹受保護的變數和內層函式。
內層函式專門負責操作外層函式的區域性變數。
將內層函式返回到外層函式外部,反覆呼叫。
子函式會一級一級地向上尋找所有父函式的變數。所以,父函式的所有變數,對子函式都是可見的,反之則不成立。
外層函式呼叫了幾次,就有幾個受保護的區域性變數副本。
同一次外層函式呼叫返回的多個內層函式,共同用乙個區域性變數。
閉包的區域性變數不能釋放。
盡量不要在定時器中使用閉包。因為閉包的外層函式定義的變數不能釋放,但是定時器使用中需要釋放。
內層函式使用自己的變數,呼叫完後,直接釋放。
function outerfun()return
innerfun;
}var globvar1 =outerfun();
globvar1();
//alert 1
globvar1(); //
alert 1
var innervar2 =outerfun();
innervar2();
//alert 1
innervar2(); //
alert 1
全域性變數釋放,是在所有**執行完成後。
var globvar = 0;function outerfun()
return
innerfun;
}var globvar1 =outerfun();
globvar1();
//alert 1
globvar1(); //
alert 2
var globvar2 =outerfun();
globvar2();
//alert 3
globvar2(); //
alert 4
function outerfun()return
innerfun;
}var globvar =outerfun();
globvar();
//alert 1
globvar(); //
alert 2
var globvar2 =outerfun();
globvar2();
//alert 1
globvar2(); //
alert 2
JS閉包詳解
1.先看看常見的例子吧 var fn null function foo fn innerfoo foo bar 下面我們通過斷點除錯的方法來看看執行順序 fn null foo foo 內部 a 2 fn innerfoo bar bar 內部 fn innerfoo 內部console.log ...
詳解js閉包
閉包 closure 是j ascript語言的乙個難點,也是它的特色,很多高階應用都要依靠閉包實現。閉包有三個特性 1.函式巢狀函式 2.函式內部可以引用外部的引數和變數 3.引數和變數不會被垃圾 機制 閉包是指有權訪問另乙個函式作用域中的變數的函式,建立閉包的最常見的方式就是在乙個函式內建立另乙...
js 閉包概念,用法
1 我們常說的閉包就是函式巢狀函式,內部函式可以引用外部函式的引數和變數 如下 2 會涉及到js中的垃圾 機制 指 當函式執行完時,函式的變數將會收回,閉包就不一樣了 如下 3 閉包中當外部函式載入完時,外部函式的變數內部函式還可以繼續使用,不會 如下 4 閉包的好處 將乙個變數長期駐紮在記憶體中 ...