【006】Rest & Spread 3个点... - 图1

🌰场景:ES5求和计算的常见写法

用call配合arguments

  1. function sum () {
  2. let num = 0
  3. Array.prototype.forEach.call(arguments, function (item) {
  4. num += item * 1
  5. })
  6. return num
  7. }
  8. console.log(sum(1, 2, 3, 4, 5, 6))

用ES6的Rest参数【…】改写求和

  1. function sum2 (...nums) {
  2. // Rest parameter
  3. let total = 0
  4. nums.forEach(function (item) {
  5. total += item * 1
  6. })
  7. return total
  8. }
  9. console.log(sum2(1, 2, 3, 4, 5, 6))

Tips1:Rest parameter [不确定数量的参数]
Tips2: ES6中禁止调用arguments

Spread operate

把确定个数的数组元素一一放入对应的虚参内

  1. function sum4 (x = 1, y = 2, z = 3) {
  2. return x + y + z
  3. }
  4. let arrNum1 = [5, 6, 7]
  5. console.log(sum4(...arrNum1))

Tips:实参和虚参的数量必须一致!

ES5中类似spread的写法

用apply和this关键字

  1. let arrNum2 = [5, 6, 8]
  2. console.log(sum4.apply(this, arrNum2))