关于ECMA-JS6的初学笔记
##目录
关于let你应该知道的:
- let 命令只在其所在的代码块内有效
- let 命令特别适合循环语句( for / while / do...while )
- 不存在变量提升
- 暂时性死区 (在代码块内,使用let命令声明变量之前,该变量都是不可用的)
- 不允许重复声明
关于const命令你应该知道的
- const声明一个只读的常量,一旦声明,则该常量的值就不可更改.
- 一旦声明,必须赋值.
- 其他性质和let一致.
- 只在其所在的代码块内有效
- 不存在变量提升
- 暂时性死区
- 不允许重复声明
(1) 解构赋值 : ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值.这被称为解构赋值.
(2) 只要等号两边的模式相同,左边的变量就会被赋予对应的值
所谓模式相同:指的是等号左边的数据类型 和 等号右边的数据类型相同.
ES5写法:
let a = 1;
let b = 2;
let c = 3;
ES6写法:
let[a,b,c] = [1,2,3];
```js
let[a,b,c] = [1,2,3];
let [ , , third] = ["foo", "bar", "baz"];
let [x,y,z] = [1,2];
// x -> 1
// y -> 2
// z -> undefined
*如果解构不成功,变量的值就等于undefined.
```
解构不仅可以用于数组,还可以用于对象。
对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
let { baz } = { foo: "aaa", bar: "bbb" };
baz // undefined
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"