網(wǎng)上看到一道坑爹的面試題脑融,代碼如下:
(js真是處處是坑呀。缩宜。肘迎。(┬_┬))
alert(a)
a();
var a=3;
function a(){
alert(10)
}
alert(a)
a=6;
a();
輸出結(jié)果(chrome下):
function a(){
alert(10)
}
10
3
console Error:
Uncaught TypeError: a is not a function
作為前端小白的我,剛開始也是懵逼的呀锻煌,雖然我還知道變量提升妓布。
網(wǎng)上的解釋:
- 同一個(gè)標(biāo)識(shí)符的情況下,變量聲明與函數(shù)聲明都會(huì)提升
- 函數(shù)聲明會(huì)覆蓋變量聲明宋梧,但不會(huì)覆蓋變量賦值
所以以上代碼等價(jià)于:
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:沒有去其他瀏覽器下測(cè)試,有興趣的可以去試一下結(jié)果是否一樣