Rest parameters and spread operator

Rest parameters ...

// 不會出現錯誤,只有前面 2 個參數會相加,多餘的參數不會有作用
function sum(a, b) {
  return a + b;
}

alert( sum(1, 2, 3, 4, 5) );

// rest 參數把剩餘所有參數放到 array 中
function sumAll(...args) { // args is the name for the array
  let sum = 0;

  for (let arg of args) sum += arg;

  return sum;
}
alert( sumAll(1) ); // 1
alert( sumAll(1, 2) ); // 3
alert( sumAll(1, 2, 3) ); // 6

function showName(firstName, lastName, ...titles) {
  alert( firstName + ' ' + lastName ); // Julius Caesar
  // the rest go into titles array
  // i.e. titles = ["Consul", "Imperator"]
  alert( titles[0] ); // Consul
  alert( titles[1] ); // Imperator
  alert( titles.length ); // 2
}
showName("Julius", "Caesar", "Consul", "Imperator");

// rest 必須是最後一個參數
function f(arg1, ...rest, arg2) { // arg2 after ...rest ?!
  // error
}

The “arguments” variable

Spread operator

Last updated

Was this helpful?