3 回答

TA贡献1757条经验 获得超8个赞
通俗的给你解释一下!!
js执行顺序一般认为从上而下 但是函数声明权重高 提升 var声明提升 可以理解为
函数 > var >自上到下
(并不是完整的就是这样 只是通俗给你解释上面这套题写的表达式, 但是这个成立)
然后捋一下 先函数声明 声明hah 然后var 声明 此时为未定义 然后hah(1)调用函数,调用
的时候进行一系列 赋值 操作 自上从下撸代码就可以了 至于参数这个number以及下面的判断
都是迷惑你的, 别被迷惑,去掉也是show 4这样的结果

TA贡献1752条经验 获得超4个赞
因为在ES6之前,JavaScript没有块级作用域,只有全局作用域和函数作用域。
变量提升的本质是将变量声明提升到它所在作用域的最开始的部分。
浏览器环境 window 是全局作用域,函数 function 包裹的是函数作用域。
while 不是函数,它没有作用域。所以,在条件为 true 的时候相当于:
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条经验 获得超2个赞
等价于
function hah(number){
var a="show";
var a;
while(number!=0){
alert(a);//show
a=4;
alert(a);//4
number--;
}
}
hah(1);
添加回答
举报