ES6新特征总结与介绍——声明与表达式

454 阅读1分钟

阮一峰的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对象之间的区别主要有三个:

  1. 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  2. arguments对象不是一个真正的数组,而剩余参数是真正的数组。
  3. arguments对象还有一些附加的属性 (如callee属性)。