-
陪伴而非守候
通俗的给你解释一下!!js执行顺序一般认为从上而下 但是函数声明权重高 提升 var声明提升 可以理解为函数 > var >自上到下 (并不是完整的就是这样 只是通俗给你解释上面这套题写的表达式, 但是这个成立)然后捋一下 先函数声明 声明hah 然后var 声明 此时为未定义 然后hah(1)调用函数,调用的时候进行一系列 赋值 操作 自上从下撸代码就可以了 至于参数这个number以及下面的判断都是迷惑你的, 别被迷惑,去掉也是show 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);
-
慕斯王
等价于function hah(number){ var a="show"; var a; while(number!=0){ alert(a);//show a=4; alert(a);//4 number--; }}hah(1);