在JavaScript中有一种机制就是:“预解析机制”
简单来说就是在解析过程中会先将函数声明和变量声明提前解析
函数声明:
function foo() {
console.log(1)
}
这种函数声明方式会将函数名和整个函数语句都提前
所以在遇到下面这种情况:
var foo = function () {
console.log(2)
}
function foo() {
console.log(1)
}
foo();
猜一猜控制台会输出什么?
答案是:2;因为用function声明的foo 函数名和函数语句都被提前解析 ,匿名函数就会覆盖function 声明的foo,所以输出的是2
网友评论