变量提升

var会将变量声明提升;
let const 不会将变量声明提升;

  1. console.log(a);//undefined
  2. var a=3;

上述代码编译出来是

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

使用let声明变量,同样的代码表现却不一样

  1. console.log(a);//ReferenceError:a is not defined
  2. let a=3;

可见,let是不会提升变量声明的。

函数声明提升

  1. foo();//hello
  2. function foo(){
  3. console.log('hello')
  4. }