rest 参数
ES6 引入 rest 参数,用于获取函数的实参,用来代替 arguments。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。
//add函数是一个求和函数,利用 rest 参数,可以向该函数传入任意数目的参数。
function add(...values) {
let sum = 0;
for (var val of values) {
sum += val;
}
return sum;
}
add(2, 5, 3 ,100)
下面是一个 rest 参数代替
arguments
变量的例子。rest 参数的写法更自然也更简洁。
// arguments变量的写法
function sortNumbers() {
return Array.from(arguments).sort();
}
// rest参数的写法
const sortNumbers = (...numbers) => numbers.sort();
注意:rest 参数非常适合不定个数参数函数的场景
例:利用 rest 参数改写数组
function push(array, ...items) {
items.forEach(function(item) {
array.push(item);
console.log(item);
});
}
let a = [];
push(a, 1, 2, 3, 2, fja)
spread 扩展运算符
扩展运算符(
spread
)也是三个点(
...
)。它好比
rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列,对数组进行解包。
//展开数组
let tfboys = ['蔬菜','水果','老干妈'];
function fn(){
console.log(arguments);
}
fn(...tfboys)
//展开对象
let skillOne = {
q: '菠萝',
};
let skillTwo = {
w: '香蕉'
};
let skillThree = {
e: '芒果'
};
let skillFour = {
r: '荔枝'
};
let gailun = {...skillOne, ...skillTwo,...skillThree,...skillFour};