声明方法
在ES5中我们的声明关键字只有一个var,我们任何变量都使用var来声明,甚至重复声明同一个变量,比如下面这样。
var a = 1;
var a = 2;
这样的写法明显是有缺陷的,但是在ES5中这样的写法并不违法。
let(不可重复声明)
let是ES6中新的声明方法,他的特点是已经声明过的变量不能重复声明,就想上面那个例子,如果我们用let关键字声明,他就会出现以下报错,提醒我们变量已经声明

const(常量)
常量的概念在很多语言中都存在,在ES6中也引入了常量的声明方式const,和其他语言的常量一样,被声明的常量不能被重新赋值。由于const具有和let一样的不可重复声明的特性,因此我们需要修改一下上面的例子:
const a = 1;
a = 2;
他会出现以下报错,提醒我们不能对常量再进行赋值。

块级作用域
var的作用域
在ES5中,var的作用域是函数级的,即我们在函数内部的任何地方只要使用var声明了变量,由于变量提升,该变量就能在该函数的任何地方被访问。
由于ES5中我们没有块级作用域变量,所以我们常常采用闭包或者立即执行函数IIFE的方法实现块级作用域的效果,他们的原理依然是利用var的函数级作用域。
let的作用域
在ES6中,let的作用域是块级的,所谓代码块,即 { } 括起来的部分。
解构赋值
let { a, b } = { a: 1, b: 2 }
let [c, d] = [12, 13]
目的:为了取数据方便。
注意事项:
- 两边的结构必须一样;
- 右边必须是个对象(数组);
- 赋值和解构需同时完成,不能分成两句代码;
总结
var | let | const |
---|---|---|
可以重复声明 | 不能重复声明 | 不能重复声明 |
不能限制修改 | 变量可修改 | 常量不能再赋值 |
函数级作用域 | 块级作用域 | 块级作用域 |
var say goodbye!
网友评论