阮一峰的ES6标准入门比较长,最近发现菜鸟教程的ES6教程写的还(xie)不(de)错(duan),准备读一读。
一、let与const
1. let
- 代码块内有效
- 不能重复声明
- 不存在变量提升
2. const
- 声明常量
- 对于复杂类型,变量指向的内存地址其实是保存了一个指向实际数据的指针,所以const只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了。
二、解构赋值
1. 数组模型的解构(Array)
let [a, b, c] = [1, 2, 3];// a = 1// b = 2// c = 3复制代码
2. 对象模型的解构(Array)
let { foo, bar } = { foo: 'aaa', bar: 'bbb' };// foo = 'aaa'// bar = 'bbb'复制代码
三、展开运算符(剩余运算符)
1. 展开语法
将数组和对象展开为其中的各个元素。
let arr1 = [0, 1, 2];let arr2 = [3, 4, 5];let arr3 = [...arr1, ...arr2]//arr3 = [ 0, 1, 2, 3, 4, 5]let z = { a: 3, b: 4 };let n = { ...z };n // { a: 3, b: 4 }复制代码
2. 剩余运算符
剩余参数语法允许我们将一个不定数量的参数表示为一个数组。
function(a, b, ...rest) { // ...}复制代码
剩余参数和 arguments对象之间的区别主要有三个:
- 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
- arguments对象不是一个真正的数组,而剩余参数是真正的数组。
- arguments对象还有一些附加的属性 (如callee属性)。