根據官方書籍《你不知道的javascript》(上卷)中寫道:
“函數會首先被提升,然后才是變量”。
例子:
console.log(foo);
function foo(){
console.log("函數聲明");
}
var foo = "變量";
輸出為:
function foo(){
console.log("函數聲明");
}
代碼實際是:
function foo(){
console.log("函數聲明");
}
var foo;
console.log(foo);
foo = "變量";
函數提升優先級比變量提升要高,且不會被變量聲明覆蓋,但是會被變量賦值覆蓋。
在最后再加上打印就能看到函數已經被覆蓋了。