關於閉包的理解

2022-05-17 21:08:37 字數 835 閱讀 4789

js複習決定把閉包這個特性好好研究清楚

閉包是一種函式特性把,函式包含子函式,通過子函式訪問自身變數,然後在講子函式返回,達到普通函式做不到的特性

普通函式可以訪問全域性變數,但是不能訪問其他函式的變數

var n = 1;

function

f1()

f1();   

//=> 1

function

f2()

f2();  

//b is not defined

如果我們想訪問其他函式中的值,我們可以用閉包

function

f()  

return

f1;   }

var f2 = f(); //

把返回的函式值賦給f2

alert(f2()); //

=>2

我們也可以使用閉包來儲存變數

上述**,我們呼叫f2之後可以得到n的值,n的值沒有隨著f的呼叫之後消失

閉包就是定義在函式中能訪問其他函式區域性變數的函式,所以本質上閉包就是將函式內部和外部連線起來的一座橋梁。

快取:最顯而易見的好處,就是可以實現資料快取,我們可以把乙個需要長期用到的變數設為閉包函式的區域性變數,在子函式裡面直接使用它。因此區域性變數只定義初始化一次,但我們可以多次呼叫子函式並使用該變數。這比起我們在子函式中定義初始化變數,多次呼叫則多次初始化的做法,效率更高。

實現封裝:如同前面所說,閉包函式就如同乙個「類」,只有在該閉包函式裡的方法才可以使用其區域性變數,閉包函式之外的方法是不能讀取其區域性變數的。這就實現了物件導向的封裝性,更安全更可靠。

關於閉包的理解

發表一下關於閉包的理解 首先把每乙個函式看成乙個乙個的 小黑屋 小黑屋裡面可以看到外面的東西,但外面卻看不到小黑屋裡面的東西,就好比是函式可以訪問外面全域性變數,但是外面卻訪問不了 小黑屋 裡面的變數 變數分為全域性變數和區域性變數 列 函式可以訪問外面全域性變數 var a 1 function ...

關於閉包的理解

閉包官方定義 閉包是指程式中有許多變數和繫結變數的執行環境。本人自己理解 程式的 段允許存在一級函式並且一級函式不能被釋放,一級函式沒有釋放之前,外部可以使用一級函式的區域性變數。進一步理解 閉包就是外部可以使用區域性變數。閉包的功能 1 外部可以使用區域性變數。2 使函式不能釋放。閉包的缺點 外部...

關於JS閉包的理解

閉包要解決的問題是 乙個函式可以擁有私有變數,並且外部可以通過閉包訪問該私有變數 閉包是一種保護私有變數的機制,在函式執行時形成私有的作用域,保護裡面的私有變數不受外界干擾。直觀的說就是形成乙個不銷毀的棧環境。計數器例項 區域性變數計數。p button onclick myfunction 1 b...