看下面三個例子
1.
var foo=1;
function foo(){console.log(123)};
console.log(foo);//1
知識點:函數聲明提前,最後賦值爲1,所以打印結果爲1.
2.
var foo=1;
foo=function(){console.log(123)};
console.log(foo);//function(){console.log(123)}
知識點:函數表達式聲明不提前,foo值開始爲1,後又賦值爲函數
3.
var foo=1;
function abc(){
foo=10;
return;
function foo(){console.log(123)}
}
abc();
console.log(foo);//1
知識點:abc內部函數聲明提前,最後賦值爲10,相當於abc裏面有個局部變量foo=10;