🌰场景:ES5求和计算的常见写法
用call配合arguments
function sum () {
let num = 0
Array.prototype.forEach.call(arguments, function (item) {
num += item * 1
})
return num
}
console.log(sum(1, 2, 3, 4, 5, 6))
用ES6的Rest参数【…】改写求和
function sum2 (...nums) {
// Rest parameter
let total = 0
nums.forEach(function (item) {
total += item * 1
})
return total
}
console.log(sum2(1, 2, 3, 4, 5, 6))
Tips1:Rest parameter [不确定数量的参数]
Tips2: ES6中禁止调用arguments
Spread operate
把确定个数的数组元素一一放入对应的虚参内
function sum4 (x = 1, y = 2, z = 3) {
return x + y + z
}
let arrNum1 = [5, 6, 7]
console.log(sum4(...arrNum1))
Tips:实参和虚参的数量必须一致!
ES5中类似spread的写法
用apply和this关键字
let arrNum2 = [5, 6, 8]
console.log(sum4.apply(this, arrNum2))