JS 知识点讲解: 提升

70 阅读1分钟
  1. 首先我们需要明白一点: 提升是指声明提升,而赋值和其他运行逻辑会留在原地 例子:
foo();
function foo() { 
	console.log( a ); // undefined
	var a = 2; 
}

var a = 2 可以理解为两个步骤:

  1. 声明变量a
  2. a赋值 根据输出的是 undefined, 说明了 var a 声明被提升了, 而 a=2 这个赋值操作却没有
  1. 函数声明会被提升,但是函数表达式却不会被提升。
foo(); // 不是 ReferenceError, 而是 TypeError!
var foo = function bar() { // ... }; // 此处是一个函数表达式

  1. 函数声明和变量声明都会被提升, 但是 函数声明 优先级高于变量声明