var foo = 2;
console.log(foo); // 2
function foo() {
}
console.log(foo); // 2
var foo = 2;
console.log(foo); // 2
foo = function () {
}
console.log(foo); // function
function foo() {
}
console.log(foo); // function
var foo = 2;
console.log(foo); // 2
var foo可以覆盖function foo, 反之就不行。js 编译对这种操作是怎么解决的?感觉哪块知识有欠缺。