rest运算符--剩余运算符
->替代原生 JS中函数接收数据的arguments特殊参数--可当形参使用
语法:
// rest参数只能出现在行使参数的最后一个位置
// 用于接受除了固定参数之外,其他的所有参数数据(替代了原生的arguments)
function fn(固定参数, ...剩余参数) {
}
代码结构:
function show(name, ...info) {
console.log(`公司名称:${name}`)
console.log(`公司信息info:${info}`)
console.log(`公司信息arguments:`, arguments)
}
// show("OFFCN") // OFFCN参数 -> name接受
// show("中公", "WEB前端")
show("中公", "WEB前段", "java", "devops", "delphi")
注:
- rest->剩余参数,会将函数中多个参数接受并使用英文逗号进行拼接,在函数内部直接使用
如果需要对参数进行区分,固定参数和剩余参数,rest剩余参数
--优点:将固定参数和剩余参数直接进行了区分
-- 缺点:ES6支持(忽略)
- arguments是一个特殊参数,会将函数中所有参数接受并封装在一个类数组的数据中
如果对函数接受的所有参数不做任何区分,arguments操作参数更加方便
--优点:直接接受所有参数数据
--缺点:无法区分固定参数和剩余参数
综上:项目开发过程中建议使用rest剩余参数
spread--延展运算符
->数据集延展运算符
->将一个数据集合中的数据进行拼接并返回处理--可当实参使用
语法:
// 数据集
var arr = [1, 2, 3, 4, 5]
// 使用延展运算符
console.log(...arr)
代码操做
// 2、spread延展运算符
var arr = ["web前端开发", "java", "python", "javascript"]
// console.log(...arr) // 延展运算符:web前端开发 java python javascript
// 延展运算符,一般可以当成函数的实际参数使用
show("OFFCN", ...arr)
// 注意:延展运算符,一般不能直接当成表达式进行运算
// var info = ...arr // 提示语法错误,没有这种语法
// 可以当成一种特殊的运算,完成数据的拷贝
var arr2 = [...arr] // 数组拷贝
arr2.push("C++")
console.log(arr, arr2)
注:
延展运算符:spread运算符,主要用于展开数据集
- 延展运算符,主要的应用场景,当成函数实际参数将数据集进行拆分传递
- 延展运算符,不能直接在表达式中进行操作
- 延展运算符,可以完成数据的拷贝操作【底层按照解构赋值的方式进行拷贝】
rest和spread主要是为函数式编程提供了语法上的优化