每天一点小知识
JavaScript中存在变量提升与函数提升,但是函数会先提升,变量后提升。
foo(); //1
var foo;
function foo(){
console.log(1);
}
foo = function(){
console.log(2);
};
//你会发现会输出1而不是2,因为它会被引擎理解为如下形式:
function foo(){
closole.log(1);
}
foo(); //1
foo = function(){
console.log(2);
}
//注意:var foo 尽管出现在function foo()声明之前,但它是重复声明(因此被忽略了),因为函数声明会被提升到普通变量之前。