ES6学习二
函数rest参数和扩展运算符
上一篇学习了ES6的变量以及变量的解构赋值,这次学习一些ES6的扩展方法。
函数rest参数和扩展运算符看起来比较相似,容易弄混,所以先把他们放在一起来学习。
1. 形式
首先来看,rest参数和数组或对象扩展运算符(spread)形式都是...变量名
。
2. rest参数
rest参数属于函数
的扩展,是在函数声明
时,用于获取不确定的函数参数(其实也可以在变量的解构赋值中声明
变量使用)。
2.1 代替arguments对象
如果函数声明时只有一个rest参数,那个这个参数就可以代替arguments
对象了。
// arguments变量的写法
function sortNumbers() {
return Array.from(arguments).sort();
}
const res1 = sortNumbers(2,4,3,12,1)
console.log(res1); // [ 1, 12, 2, 3, 4 ]
// rest参数的写法
const sortNumbers = (...numbers) => numbers.sort();
const res1 = sortNumbers(2,4,3,12,1)
console.log(res1); // [ 1, 12, 2, 3, 4 ]
rest参数和arguments
对象的区别:
arguments
对象是一个类数组对象,不能直接使用数组的方法,rest 参数搭配的变量就是一个真正的数组,即可以直接使用数组的方法。- 函数的length属性是包括
arguments
对象的,但是不包括rest参数
function aoo(a) {
}
function boo(arguments) {
}
function coo(...arg) {
}
function doo(frist, ...arg) {
}
console.log(aoo.length); // 1
console.log(boo.length); // 1
console.log(coo.