首先提出一个问题,为什么会有预处理?
预处理是因为js会首先把全盘的js扫描一遍,所以就产生了预处理。
js处理分为两个阶段, 预处理阶段和执行阶段
想要深度理解好预处理一定要弄清楚下面两大点:
1.词法环境(Lexical Environment)
1.1 在ECMA -262 标准中定义了 VariableEnvironment ---用于js解析器
1.2 顶级的LexicalEnvironment是window
2.先扫描函数声明后扫描变量(var声明)
2.1 函数级别最高
2.2 处理函数声明有冲突,会覆盖
2.3 处理变量声明时有冲突,会忽略