1. 程式人生 > >js中函式與變數名重名

js中函式與變數名重名

alert(a);
a();
var a=3;
function a(){
    alert(10);
}   
alert(a);
a=6;
a();

sf上翻文章,看到這道題,先答題後coding驗證,第三個alert答錯了。。。

然後又拆成

var a=3;
function a(){
    console.log(10);
}   
console.log(a);
a();

網上查了查,原來是解析的時候,函式宣告和變數宣告都會置頂,但是變數宣告位於函式宣告之後。所以這裡就是var a的宣告會覆蓋函式的宣告。

相當於

function a(){
    console.log(10)
}   
var a;
console.log(a);
a();
a = 3;