js 閉包概念,用法

2022-05-03 14:54:24 字數 2190 閱讀 1494

(1)我們常說的閉包就是函式巢狀函式,內部函式可以引用外部函式的引數和變數    【**如下】

(2)會涉及到js中的垃圾**機制(指:當函式執行完時,函式的變數將會收回,閉包就不一樣了)   【**如下】

(3)閉包中當外部函式載入完時,外部函式的變數內部函式還可以繼續使用,不會**   【**如下】

(4)閉包的好處 

①將乙個變數長期駐紮在記憶體中    【**如下】

②避免全域性變數對函式的汙染    【**如下】

③私有成員的存在   【**如下】

(5)閉包的用法   【**如下】

①模組化**  【**如下】

②在迴圈中直接找到對應元素的索引   【**如下】

(1)    or  example (1)

輸出: ruanjiang

(2)    or  example

//

js中正常函式

function

one()

one();

//輸出ruanjiang

function

two()

two();

//輸出為空

(3)  for  example  (1)(2)(3)(4)①②

//

js原全域性變數的汙染

var a=1;//

為全域性變數

function

one()

one();

//、2

one(); //

3 alert(a);//

函式外部可引用a

//垃圾**機制

function

one1()

one1();

//、2

one1(); //

、2//

閉包function

one2()

}var b =one2();

b(); //2

b(); //

/3 alert(a);//

a為空 表示a為區域性變數

(4)    for example  (4)③    (5)①

//

函式宣告函式diaoyong

function

one()

one();

//函式表示式

(function

one1())(); //

模組化**

var one2=(function

() })();

one2(); //3

one2(); //5//

私有成員 方法函式

var one3=(function

()

function aaa()

return

})();

one3.b(); //2

one3.c(); //7//

alert(a); not defind

//alert(bbb); not defind

//alert(ccc); not defind

(5)for example  (5)②

方法一

輸出結果:點選點乙個li輸出這是一樓0,點選第二個li輸出這是一樓1,以此類推

方法二

window.onload = function

() })(i);

}}

//

閉包在ie下可能會引起記憶體洩漏

//js的物件屬性(odiv.onclick)引誘內部的時候(odiv.id),內部又應有外部物件,就會引起

window.onload = function

() }

//解決方法一,當window.onload出現時將事件取消

window.onunload = function

()

//方法二

window.onload = function

();

odiv = null

;

};

詳解JS閉包概念

閉包理解 1.如何產生閉包?當乙個巢狀的內部 子 函式引用了巢狀的外部 父 函式的變數 函式 時,產生閉包 2.閉包到底是什麼?使用 chrome 除錯檢視 理解一 閉包是巢狀的內部函式 絕大部分人 理解二 包含被引用變數 函式 的物件 極少數人 注意 閉包存在於巢狀的內部函式中 3.產生閉包的條件...

簡單描述js閉包概念

簡單的描述閉包 如果在函式func內部宣告函式inner,然後在函式外部呼叫inner,這個過程即產生了乙個閉包。實現函式 makeclosures,呼叫之後滿足如下條件 1 返回乙個函式陣列 result,長度與 arr 相同 2 執行 result 中第 i 個函式,即 result i 結果與...

js 閉包的用法詳解

實現可重用的區域性變數,且保護其不受汙染的機制。外層函式包裹受保護的變數和內層函式。內層函式專門負責操作外層函式的區域性變數。將內層函式返回到外層函式外部,反覆呼叫。子函式會一級一級地向上尋找所有父函式的變數。所以,父函式的所有變數,對子函式都是可見的,反之則不成立。外層函式呼叫了幾次,就有幾個受保...