3 回答

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
由Function構(gòu)造函數(shù)創(chuàng)建的函數(shù)也是閉包嗎?
是的,它關(guān)閉了全球范圍。這可能是不直觀的,因?yàn)樗衅渌鸍avaScript閉包都超出了其詞法范圍,但仍符合我們對(duì)閉包的定義。在您的示例中,a是一個(gè)自由變量,a當(dāng)在某處調(diào)用inner/ fn函數(shù)時(shí),它將解析為另一個(gè)作用域中的。
如果內(nèi)部函數(shù)沒有任何自由變量,我們還能稱其為閉包嗎?
取決于您問誰。有人說“是”,其他人則稱它們?yōu)椤盁o趣的閉包”,我個(gè)人說“否”是因?yàn)樗鼈儧]有引用外部作用域。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您遵循ES5規(guī)范,則的[[scope]]會(huì)inner
存儲(chǔ)的詞法環(huán)境outer
及其outer
和a
變量-因此所有內(nèi)容仍然可以訪問并記住。如果遵循實(shí)際的ES實(shí)現(xiàn),并inner
使用調(diào)試器進(jìn)行檢查,則看不到任何作用域引用-它不需要它們,因?yàn)闆]有可用變量。
添加回答
舉報(bào)