# 提升

包括变量函数在内的所有声明都会在任何代码执行前首先被处理赋值操作会在执行到这句话时在进行处理。
这个过程导致变量函数的声明好像从代码出现的位置被移动,这个过程就是提升(每个作用域都会有提升操作)。

// 变量提升
num = 1;
console.log(num); // 1  不会报错,因为var num;会被提升
var num;

// 变量提升2
console.log(num1); // undefined 而不是ReferenceError 编译阶段会把num1放到作用域,在代码执行到这一句时在进行 = 2的赋值操作
var num1 = 2;
// 等同于 >>>>>
// var num1;
// console.log(num1);
// num1 = 2;

// 函数提升  比较常见
smile(); // haha
function smile() {
  console.log('haha');
}

函数声明被优先提升,然后才是变量。

  • 编译器先把函数声明放到作用域,再把变量声明放到作用域
  • 函数表达式等同于声明变量,提升优先级与变量一致

如果觉得内容对你有帮助,请点个关注,你们的鼓励是我持续更新下去的动力,比心。

如需转载请注明出处,感恩。

更多内容可先关注GitHub (opens new window)