ES6中数组新增了扩展

扩展运算符的应⽤

ES6通过扩展元素符 … ,好⽐ rest 参数的逆运算,将⼀个数组转为⽤逗号分隔的参数序列

1
2
3
4
5
6
1 console.log(...[1, 2, 3])
2 // 1 2 3
3 console.log(1, ...[2, 3, 4], 5)
4 // 1 2 3 4 5
5 [...document.querySelectorAll('div')]
6 // [<div>, <div>, <div>]

主要⽤于函数调⽤的时候,将⼀个数组变为参数序列

1
2
3
4
5
6
7
8
1 function push(array, ...items) {
2 array.push(...items);
3 }
4 function add(x, y) {
5 return x + y;
6 }
7 const numbers = [4, 38];
8 add(...numbers) // 42

ES6 允许为函数的参数设置默认值

1
2
3
4
5
6
1 function log(x, y = 'World') {
2 console.log(x, y);
3 }
4 console.log('Hello') // Hello World
5 console.log('Hello', 'China') // Hello China
6 console.log('Hello', '') // Hello

作⽤域

⼀旦设置了参数的默认值,函数进⾏声明初始化时,参数会形成⼀个单独的作⽤域

等到初始化结束,这个作⽤域就会消失。这种语法⾏为,在不设置参数默认值时,是不会出现的

下⾯例⼦中, y=x 会形成⼀个单独作⽤域, x 没有被定义,所以指向全局变量 x

箭头函数

1
2
3
4
5
var f = v => v;
// 等同于
var f = function (v) {
return v;
};

如果箭头函数不需要参数或需要多个参数,就使⽤⼀个圆括号代表参数部分

1
2
3
4
5
6
7
8
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};

super关键字

this 关键字总是指向函数所在的当前对象,ES6 ⼜新增了另⼀个类似的关键字 super ,指向当前

对象的原型对象