网上看到一道坑爹的面试题,代码如下:
(js真是处处是坑呀。。。(┬_┬))
alert(a)
a();
var a=3;
function a(){
alert(10)
}
alert(a)
a=6;
a();
输出结果(chrome下):
function a(){
alert(10)
}
10
3
console Error:
Uncaught TypeError: a is not a function
作为前端小白的我,刚开始也是懵逼的呀,虽然我还知道变量提升。
网上的解释:
- 同一个标识符的情况下,变量声明与函数声明都会提升
- 函数声明会覆盖变量声明,但不会覆盖变量赋值
所以以上代码等价于:
var a;
function a(){
alert(10)
}
alert(a) //function a(){alert(10)}
a(); //10
a=3;
alert(a) //3
a=6;
a(); //Uncaught TypeError: a is not a function
ps:没有去其他浏览器下测试,有兴趣的可以去试一下结果是否一样
网友评论