閉包的快速了解

2021-09-13 21:29:43 字數 728 閱讀 4658

想著重新跳槽,偶爾想起用過太多的閉包,卻一下子組織不起來語句去描述它。

今天在這好好談談閉包。

先上**:

function a()

return b; //在 a 中返回 b

}var c = a(); //執行 a,並把 a 的返回結果賦值給變數 c

c();// hello 小仙女! //執行 c

這是最簡單的閉包。

總結一句話:

當乙個內部函式被其外部函式之外的變數引用時,就形成了乙個閉包。(面試官問的話這麼答也可以的)

這是對閉包最簡單的理解,當然閉包還有其更深層次的理解,這個就涉及的多了,你需要了解js的執行環境(execution context)、活動物件(activation object)以及作用域(scope)和作用域鏈(scope chain)的執行機制。

第1個() 是乙個表示式,而這個表示式本身是乙個匿名函式,所以在這個表示式後面加 () 就表示執行這個匿名函式。

最後面試官會問你,那閉包的好處和缺點呢?

答案如下:

優點:1.減少全域性變數

2.減少傳遞函式的參數量

3.封裝

缺點:使用閉包會占有記憶體資源,過多的使用閉包會導致記憶體溢位。

加油!

快速了解js中的閉包

閉包的生成有三個必要條件 缺一不可 1.在函式 a 內部直接或者間接返回乙個函式 b 2.b 函式內部使用著 a 函式的私有變數 私有資料 3.a 函式外部有乙個變數接受著函式 b。形成了乙個不會銷毀的函式空間 我們管這個不會銷毀的 a 函式的執行空間叫做 閉包空間 把函式 a 裡面返回的 函式 b...

帶你快速了解閉包繼承,看完不會來打我

了解閉包 閉包生成的三個條件 在函式 a 內部直接或者間接返回乙個函式 b b 函式內部使用著 a 函式的私有變數 私有資料 a 函式外部有乙個變數接受著函式 b functiona var res a res 接受的是 a 函式執行以後的返回值 res 接受的就是函式 a 內部返回的乙個複雜資料型...

閉包 Python中的閉包

通俗地講就是別人家有某個東西,你想拿到但是因為許可權不夠 不打死你才怪 但是你可以跟家裡的孩子套近乎,通過他拿到!這個家就是區域性作用域,外部無法訪問內部變數,孩子是從家裡返回物件,對家裡的東西有訪問許可權,借助返回物件間接訪問內部變數!def outer 別人家 x 10 別人家裡的東西 def ...