跳到主要内容

声明提升的原理

考虑以下代码输出的结果?


输出结果


输出结果

变量提升

JS 编译器会把第一个代码片段以如下形式进行处理:

var a;
a = 2;
console.log(a);

其中第一部分是编译,而第二部分是执行。 类似地,第二个代码片段实际是按照以下流程处理的:

var a;
console.log(a);
a = 2;

这个过程就好像变量和函数声明从它们在代码中出现的位置被“移动”到了最上面。这个过程就叫作提升

函数提升

特别注意:函数声明通常会被提升到所在作用域的顶部,也是优先的

考虑以下代码


输出结果