提升
- 变量的提升
- 使用var声明的变量,它会在所有代码执行前被声明,所以我们可以在变量声明前就访问变量
- 函数的提升
- 使用函数声明创建的函数,它会在其他代码执行前被创建,所以我们可以在函数声明前就可以调用函数
- let声明的变量实际也会提升,但是在赋值之前解释器禁止对该变量的访问
console.log(a); // undefined
var a = 10;
fn1(); // "我是fn"
function fn1() {
console.log("我是fn");
}
// 变量和函数的提升同样适用于函数作用域
var b = 1;
function fn2() {
console.log(b); // undefined
var b = 2;
console.log(b); // 2
}
fn2();
console.log(b); // 1