目录
1. 变量提升(Hoisting)
变量提升(Hoisting)
- 从字面意思来看:
- 指变量(和函数)的声明会被提升到代码的头部
- 从运行结果来看:
- 指变量(和函数)可以先被调用,再被声明
比如下面这段代码并不会报错:
console.log(a);
var a = 1;
因为JavaScript引擎在编译阶段会先解析代码,获取所有被声明的变量,并将其放入内存中,所以上述代码的运行结果等同于下面这段代码:
var a;
console.log(a);
a = 1;
因此会输出undefined
,表示a
已经被声明但未赋值。
注意:
- 实际上变量(和函数)的声明在代码里物理位置是不会动的,只是会先提取出来放在内存里。
- 函数和变量相比,会被优先提升。
- 提升的只是声明,如果想提前使用需要先初始化,即初始化和使用可以在声明之前。