
🌰场景:ES5求和计算的常见写法
用call配合arguments
function sum () {let num = 0Array.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 parameterlet total = 0nums.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))
