与不定参数比较相关的是扩展运算符,不定参数将传入的多个参数合并成一个数组,而扩展运算符则是将一个数组拆分单独的元素作为函数的参数传入。

不定参数与扩展运算符做对比

不定参数

  1. // 不定参数
  2. function foo (bar, ...rest) {
  3. console.log('arguments:', arguments);
  4. console.log('bar:', bar);
  5. console.log('rest:', rest);
  6. }
  7. foo(1, 2, 3, 4, 5);

执行结果:

  1. arguments: { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5 }
  2. bar: 1
  3. rest: [ 2, 3, 4, 5 ]

扩展运算符

  1. // 扩展运算符
  2. function foo (a, b, c) {
  3. console.log('arguments', arguments);
  4. console.log('a', a);
  5. console.log('b', b);
  6. console.log('c', c);
  7. }
  8. const bar = [1, 2, 3];
  9. foo(...bar);

执行结果:

  1. arguments { '0': 1, '1': 2, '2': 3 }
  2. a 1
  3. b 2
  4. c 3