js 閉包的用法詳解

2022-04-12 14:07:03 字數 1276 閱讀 9893

實現可重用的區域性變數,且保護其不受汙染的機制。

外層函式包裹受保護的變數和內層函式。

內層函式專門負責操作外層函式的區域性變數。

將內層函式返回到外層函式外部,反覆呼叫。

子函式會一級一級地向上尋找所有父函式的變數。所以,父函式的所有變數,對子函式都是可見的,反之則不成立。

外層函式呼叫了幾次,就有幾個受保護的區域性變數副本。

同一次外層函式呼叫返回的多個內層函式,共同用乙個區域性變數。

閉包的區域性變數不能釋放。

盡量不要在定時器中使用閉包。因為閉包的外層函式定義的變數不能釋放,但是定時器使用中需要釋放。

內層函式使用自己的變數,呼叫完後,直接釋放。

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 閉包的好處 將乙個變數長期駐紮在記憶體中 ...