2 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
第一個(gè)
function rec(){
b = 'hello';
}
alert(b);
{}外面的才是全局變量,{}里面的統(tǒng)統(tǒng)都是局部變量。在js里面,所有的全局變量統(tǒng)統(tǒng)指向window,不管你在哪里聲明的變量,只要不是關(guān)鍵字(如var、let、const)聲明的,統(tǒng)統(tǒng)提升為全局變量。
第二個(gè)
var b ;
function rec(){
b = 'hello';
}
alert(b);
b(加不加關(guān)鍵字都)是全局變量,沒(méi)有值,打印當(dāng)然undefined,你把rec()執(zhí)行以下,他就有值了
第三個(gè)
function rec(){
var b;
b = 'hello';
}
alert(b);
b加了關(guān)鍵字聲明,又在{}內(nèi),所以是局部變量,你執(zhí)行rec()與否,都是undefined

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
首先建議看下js
的變量提升,了解變量提升的機(jī)制
js
的function
作用域;
全局變量指的是window
能打點(diǎn)顯示出來(lái)的,如window.b
添加回答
舉報(bào)