扩展语法
1. 函数 rest 参数
ES6
引入 rest
参数也叫剩余参数,用于获取函数的多余参数,可以替代使用arguments
对象
...
出现在函数参数列表的最后,那么它就是 rest 参数,它会把参数列表中剩余的参数收集到一个数组中
rest
参数组成的变量是一个数组,该变量将多余的参数放入数组中- 函数的
length
属性,不包括rest
参数
function restFn(...arg) {
console.log(arg);
}
restFn(1, true, {
name: 'jsx'}, [1, 2, 3, 4])
// [1, true, {…}, Array(4)]
// 函数的length属性,不包括 rest 参数
console.log(restFn.length); // 0
rest
参数获取多余参数组成数组,函数arguments
则是类数组对象,类数组不能使用数组对象方法,需要通过Array.from()
转换
function replaceArgument() {
// 没有数组方法
arguments.map((item) => {
console.log(item)
}); // arguments.map is not a function
}
replaceArgument('jsx', 100, {
title: 'arguments'}, ['html', 'css'])
function restFunc(...rest) {
// 没有数组方法
rest.map((item) => {
console.log(item)
})
}
restFunc('jsx', 100, {
title: 'arguments'}, ['html', 'css'])
rest
参数之后不能再有其他参数,即rest
参数必须放到参数列表的末尾,如果rest
参数后面还有参数,则会导致错误
function morearg(...arg, title) {
console.log(arg, title)
}
morearg('jsx', 'ljj', 22); // Uncaught SyntaxError
2. spread 语法
数组扩展运算符也叫 spread
语法,spread
语法与 rest
参数完全相反,它会把可迭代对象 arr
用逗号展开为一个参数序列
...
出现在函数调用或类似的表达式中,那它就是 spread 语法,它会把一个数组展开为列表
...
出现在函数调用或类似的表达式中,那它就是spread
语法,它会把一个数组展开为列表
let arr = ['html',