ES6声明变量的6种方法
ES5只有两种声明变量的方法:var命令和function命令。ES6除了添加了let和const命令,还有两种声明变量的方法import和是class
let , const , var 的区别
let , const , var 三个都是声明变量的变量,但是三者作用域是不一样。
ES5中作用域:全局作用域,函数作用域,但是没有块作用域的概念。
ES6中新增了块级作用域,块级作用域是由{}包括,if语句和for语句中的{}也属于块作用域
var命令
- 全局声明,全局作用域有效
- 可重复声明同一个变量(后边声明的值会覆盖前面声明)
- 可以跨块访问,但是不能跨函数访问
- var会与window相映射(会挂一个属性),而let,const不与window相映射,同理,var可以引用全局对象,但是let,const不可以
- var 和window相映射也只是局限于全局定义var变量,对于函数作用域不会映射
var a = 1; const b = 2; let c = 3; console.log(window.a); // 1 console.log(window.b); // undefined console.log(window.c); // undefined
- var声明的变量存在变量提升,可以在声明前输出 ‘undefined’
let命令【ES6新增】
- 块级作用域有效
- 不可以重复声明同一个变量(//报错’name’ has already been declared)
- 不存在变量的提升,也可以称为暂时性死区(b is not defined)
const命令【ES6新增】
- 块级作用域有效
- 不可以重复声明同一个变量(//报错’name’ has already been declared)
- 不存在变量的提升,也可以称为暂时性死区(b is not defined)
- const声明的变量的是一个只读的变量,声明后不能更改,const保证的不是变量的值不改变,而是变量指向的那个内存地址的数据不被改变
- const定义的基本类型不能改变,但是定义的队形是可以通过修改对象属性等方法来改变的