https://www.jb51.net/article/105345.htm
https://blog.csdn.net/yzbben/article/details/54598462
https://www.cnblogs.com/taohuaya/p/11129729.html
var x=12
var x=13
function x() {
console.log(x)
}
console.log(x); //13
//err:x is not a function
x()
这个串代码执行完会报错 : a is not a function
问题来了,为什么会报这个错误呢? 这里涉及到函数和变量的预解析:
1)函数声明会置顶
2)变量声明也会置顶
3)函数声明比变量声明更置顶:(函数在变量上面)
4)变量和赋值语句一起书写,在js引擎解析时,会将其拆成声明和赋值2部分,声明置顶,赋值保留在原来位置
5)声明过的变量不会重复声明
知道以上的规则,上面的代码等同于 :
var x=function (){
console.log(x);
}
var x=100;
x();