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

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

如何理解這題中的 JavaScript 作用域

如何理解這題中的 JavaScript 作用域

手掌心 2019-04-07 11:18:45
functiona(x,y){y=function(){x=2;};returnfunction(){varx=3;y();console.log(x);}.apply(this,arguments);}a();
查看完整描述

2 回答

?
慕運(yùn)維8079593

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

ECMAScript5是函數(shù)級作用域
簡單的來說,看一個(gè)函數(shù)就好了。
此段代碼中的x的輸出在內(nèi)部的高階函數(shù)里,根據(jù)作用域鏈的引用,就是在當(dāng)前函數(shù)級別的作用域中找變量。
找到了當(dāng)前作用域的x為3,所以輸出就是3了。
如果把x=3這行去掉,
那么因?yàn)樵谠搶幼饔糜蛏险也坏絰變量,就會到上層函數(shù)中找。
同理y()也一樣,所以在console.log(x)中找到的x和y()里改變的x是同一個(gè)引用。
所以輸出2
                            
查看完整回答
反對 回復(fù) 2019-04-07
?
守著星空守著你

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

變量作用域是在定義函數(shù)的時(shí)候就已經(jīng)確定了,而不是執(zhí)行時(shí),所以y()執(zhí)行時(shí)改變的x跟varx=3的x不是同一回事,console.log(x)就輸出3了
                            
查看完整回答
反對 回復(fù) 2019-04-07
  • 2 回答
  • 0 關(guān)注
  • 397 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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