ES6声明方法:var、const、let、function、class、import

105 阅读2分钟

一. 用关键字var声明变量

  1. var声明的全局对象是顶级对象(window)的属性。
  2. 用var在函数外声明的对象为全局变量,在函数内声明的对象为局部变量。
  3. 用var可以对同一对象重复声明和赋值。
  4. 用var声明的对象具有变量提升的作用(声明提前,赋值不提前)。

二. 用关键字const声明变量

  1. const命令声明的值一旦声明,就不能再次改变。
  2. const声明变量时,必须立即初始化,否则会报错(因为值一旦声明不可改变)。
  3. const声明的变量不存在变量提升。
  4. const声明的变量存在暂时性死区。
  5. const声明的变量只在块级作用域内有效。
  6. const变量在同一作用域内不能重复声明。

三. 用关键字let声明变量

  1. 用let声明的变量在块级作用域内有效。
  2. let声明的变量不存在变量提升。
  3. let声明的变量存在暂时性死区(即在同一个块级作用域中,let声明该变量的语句之前,该变量已经存在,但是不能使用)。
  4. 在同一个作用域内,对于let声明的变量不能重复声明。

四. 用关键字function声明变量

  1. 用function声明的函数对象具有变量提升的作用(声明提前,赋值不提前)。
  2. function声明的函数对象是顶级对象(window)的属性。

五. 用关键字class声明变量

  1. 用class声明的类不存在变量提升(ES5是存在变量提升的),这种规定的原因是要保证子类在父类之后定义。

六. 用关键字import声明变量

  1. import命令用于引入模块,具有提升效果,会提升到整个模块的头部,首先执行。
  2. import命令是编译阶段执行的,在代码运行之前。