3 回答

TA貢獻1757條經(jīng)驗 獲得超8個贊
通俗的給你解釋一下!!
js執(zhí)行順序一般認為從上而下 但是函數(shù)聲明權(quán)重高 提升 var聲明提升 可以理解為
函數(shù) > var >自上到下
(并不是完整的就是這樣 只是通俗給你解釋上面這套題寫的表達式, 但是這個成立)
然后捋一下 先函數(shù)聲明 聲明hah 然后var 聲明 此時為未定義 然后hah(1)調(diào)用函數(shù),調(diào)用
的時候進行一系列 賦值 操作 自上從下擼代碼就可以了 至于參數(shù)這個number以及下面的判斷
都是迷惑你的, 別被迷惑,去掉也是show 4這樣的結(jié)果

TA貢獻1752條經(jīng)驗 獲得超4個贊
因為在ES6之前,JavaScript沒有塊級作用域,只有全局作用域和函數(shù)作用域。
變量提升的本質(zhì)是將變量聲明提升到它所在作用域的最開始的部分。
瀏覽器環(huán)境 window 是全局作用域,函數(shù) function 包裹的是函數(shù)作用域。
while 不是函數(shù),它沒有作用域。所以,在條件為 true 的時候相當(dāng)于:
function hah(number){
var a="show";
alert(a);//show
var a=4;
alert(a);//4
number--;
}
hah(1);
再進一步分解,就是:
function hah(number){
var a;
var a;
a = "show";
alert(a);//show
a=4;
alert(a);//4
number--;
}
hah(1);

TA貢獻1864條經(jīng)驗 獲得超2個贊
等價于
function hah(number){
var a="show";
var a;
while(number!=0){
alert(a);//show
a=4;
alert(a);//4
number--;
}
}
hah(1);
添加回答
舉報