在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ javascript的詞法作用域

javascript的詞法作用域

function foo() {
    console.log(b)
}
var b = 2;
foo(); //2

為什么這里輸出的是2, 是和詞法作用域有關(guān)嗎?

回答
編輯回答
裸橙

var變量提升

2017年9月1日 17:21
編輯回答
哚蕾咪

關(guān)鍵字: LHS RHS

var b;
function foo() {
    console.log(b)
}
b = 2;
foo(); //  console.log(b) 函數(shù)作用域是否有b -> 沒有往上找 -> 全局作用域是否有b -> 有 -> 當(dāng)前值是多少 2
2017年8月12日 20:15
編輯回答
她愚我

變量聲明是提升的
這里相當(dāng)于調(diào)用之前變量已經(jīng)聲明了(并賦值了)

我說的話不是很清晰~ 補(bǔ)充一下
過程就是
聲明提升 此時(shí)為未定義
在你調(diào)用之前執(zhí)行了賦值語句 (賦值是在調(diào)用之前的)

2018年8月25日 20:35
編輯回答
祈歡

變量聲明是提升,再執(zhí)行foo函數(shù),合理的順序;
如果將var b = 2;放在foo();后面,打印結(jié)果為undefined

2017年7月10日 22:04
編輯回答
舊酒館

更新:

js 在執(zhí)行前就會(huì)解析代碼,此時(shí)就聲明并賦值了所有變量,然后才會(huì)開始執(zhí)行。

也就是說,是先把所有變量都準(zhǔn)備好,再按代碼的順序來執(zhí)行。

只要用了 var,那么在當(dāng)前作用域(及以下作用域中),該變量都是早早就準(zhǔn)備好了的,它被賦值的時(shí)機(jī)早于任何對(duì)它的調(diào)用行為。


關(guān)鍵字:var 變量提升

2017年2月13日 21:52