大名鼎鼎的閉包!這一題終於來瞭,面試必問。
請用自己的話簡述
由於評論裡不停有人給出錯誤的答案,這裡先聲明:如果你對閉包的理解裡有 return 這個詞,那麼你的理解就是錯的。因為閉包跟 return 沒有任何關系。理由在下文裡講。
---------------------------------------
假設上面三行代碼在一個立即執行函數中(為簡明起見,我就不寫立即執行函數瞭,影響讀者理解)。
三行代碼中,有一個局部變量 local,有一個函數 foo,foo 裡面可以訪問到 local 變量。
好瞭這就是一個閉包:
「函數」和「函數內部能訪問到的變量」的總和,就是一個閉包。
就這麼簡單。
有的同學就疑惑瞭,閉包這麼簡單麼?
「我聽說閉包是需要函數套函數,然後 return 一個函數的呀!」
比如這樣:
function foo(){
var local = 1
function bar(){
local++
return local
}
return bar
}
var func = foo()
func()
前文概要結論先行(左邊標粗為推薦款):年度最新款/熱賣款投影儀介紹區體驗檔(2000~3000)極米NEW Z6X在同價位裡,性能表現...