ES6声明方法:var、const、let、function、class、import
一. 用关键字var声明变量
- var声明的全局对象是顶级对象(window)的属性。
- 用var在函数外声明的对象为全局变量,在函数内声明的对象为局部变量。
- 用var可以对同一对象重复声明和赋值。
- 用var声明的对象具有变量提升的作用(声明提前,赋值不提前)。
二. 用关键字const声明变量
- const命令声明的值一旦声明,就不能再次改变。
- const声明变量时,必须立即初始化,否则会报错(因为值一旦声明不可改变)。
- const声明的变量不存在变量提升。
- const声明的变量存在暂时性死区。
- const声明的变量只在块级作用域内有效。
- const变量在同一作用域内不能重复声明。
三. 用关键字let声明变量
- 用let声明的变量在块级作用域内有效。
- let声明的变量不存在变量提升。
- let声明的变量存在暂时性死区(即在同一个块级作用域中,let声明该变量的语句之前,该变量已经存在,但是不能使用)。
- 在同一个作用域内,对于let声明的变量不能重复声明。
四. 用关键字function声明变量
- 用function声明的函数对象具有变量提升的作用(声明提前,赋值不提前)。
- function声明的函数对象是顶级对象(window)的属性。
五. 用关键字class声明变量
- 用class声明的类不存在变量提升(ES5是存在变量提升的),这种规定的原因是要保证子类在父类之后定义。
六. 用关键字import声明变量
- import命令用于引入模块,具有提升效果,会提升到整个模块的头部,首先执行。
- import命令是编译阶段执行的,在代码运行之前。