看下面三个例子
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;