最近看源码的时候经常被
...
绕晕,果断恶补一番,以下是学习笔记
特点:
- 运算符后面的变量是预先定义的
- 那个变量只能是数组
- 顾名思义,单 -> 多,把它展开来
- array -> multiple elements
var arr = [1, 2, 3];
myFunction(...arr);
// 相当于
myFunction.apply(undefined, arr)
会把传入的数组自动分解成多个参数
var arr = [1, 2, 3];
[...arr, 4, 5, 6];
// 相当于
[].concat(arr, [4, 5, 6])
会把数组拆分成多个元素,然后再并入另一个数组
var str = '1234';
Math.max(...str) // => 4
会把字符串拆分成多个元素
特点:
- … 后面的变量是新的形参
- 产出的变量会是数组
- 必须是参数的最后一个
- 顾名思义,只影响剩余部分,多 -> 单
- array-like (only the rest part) -> array
function test(a, b, ...args) {
console.log(args); // => [3, 4]
}
test(1, 2, 3, 4);
会把 arguments 剩余的部分
自动转换成 真正的数组
var [a, ...args] = [1, 2, 3, 4];
a // => 1
args // => [2, 3, 4]