扩展运算符
扩展运算符(spread) 是三个点(...),它如同 rest 运算,将一个数组转为用逗号分割的参数序列。
console.log(...[1,2,3,4]);
// 1 2 3 4
console.log(1,...[2,3,4],5);
//1 2 3 4 5
该运算符主要用于函数调用
function push (array,...items){
array.push(...items);
}
function add(x,y){
return x+y;
}
var numbers = [4,38];
add(...numbers); //42
上面的代码中, array.push(...items); 和 add(...numbers); 这两行都是函数的调用,他们都是用了扩展运算符,该运算符可以将一个数组变为参数序列。
扩展运算符后面还可以放置表达式
const arr = [
...(x > 0 ? ['a'] : []),
'b',
];
如果扩展运算符后面是一个空数组,则不产生任何效果
[...[],1];
// [1]
扩展运算符的应用
合并数组
// es5
[1,2].concat(more);
// es6
[1,2, ...more]
var arr1 = ['a','b'];
var arr2 = ['c'];
var arr3 = ['d','e'];
// es5 合并数组
arr1.concat(arr2,arr3);
// es6 合并数组
[ ...arr1, ...arr2, ...arr3]
与解构赋值结合
如果扩展运算符用于数组赋值,则只能将其放在参数最后一位,否则会报错。
函数返回值
JavaScript 的函数只能返回一个值,如果返回多个,只能返回数组或对象。扩展运算符提供解决这个问题变通做法。
var first = ['aa','bb'];
var d = new Date(...first);
上面代码从数据库取出一行数据,通过扩展运算符,直接将其传入构造函数 Date。字符串
扩展运算符还可以将字符串转为真正的数组