第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JavaScript中的每個(gè)函數(shù)都是對(duì)的嗎?

JavaScript中的每個(gè)函數(shù)都是對(duì)的嗎?

千萬里不及你 2019-11-04 11:11:08
我知道JavaScript中的每個(gè)函數(shù)都是一流的對(duì)象,并且具有內(nèi)部屬性[[scope]],該屬性承載該函數(shù)的自由變量的綁定記錄。但是,有兩種特殊情況。由Function構(gòu)造函數(shù)創(chuàng)建的函數(shù)也是閉包嗎?由函數(shù)構(gòu)造函數(shù)創(chuàng)建的函數(shù)對(duì)象是特殊的,因?yàn)槠鋄[scope]]可能不引用其外部函數(shù)的詞法環(huán)境,而僅引用全局上下文。例如,var a = 1; var fn = (function outer() {    var a = 2;     var inner = new Function('alert(a); ');    return inner;})();fn(); // will alert 1, not 2.這是不直觀的。這也稱為關(guān)閉嗎?如果內(nèi)部函數(shù)沒有任何自由變量,可以說創(chuàng)建內(nèi)部函數(shù)時(shí)形成了閉包嗎?例如,// This is a useless case only for academic studyvar fn = (function outer() {    var localVar1 = 1,        localVar2 = 2;    return function() {};})();在這種情況下,fn引用一個(gè)作為內(nèi)部函數(shù)創(chuàng)建的空函數(shù)對(duì)象。它沒有自由變量。在這種情況下,我們可以說形成了閉合嗎?
查看完整描述

3 回答

?
阿晨1998

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)樗鼈儧]有引用外部作用域。


查看完整回答
反對(duì) 回復(fù) 2019-11-04
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您遵循ES5規(guī)范,則的[[scope]]會(huì)inner存儲(chǔ)的詞法環(huán)境outer及其outera變量-因此所有內(nèi)容仍然可以訪問并記住。如果遵循實(shí)際的ES實(shí)現(xiàn),并inner使用調(diào)試器進(jìn)行檢查,則看不到任何作用域引用-它不需要它們,因?yàn)闆]有可用變量。

查看完整回答
反對(duì) 回復(fù) 2019-11-04
  • 3 回答
  • 0 關(guān)注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)