数组销毁时获取未定义不是函数

时间:2018-11-10 17:17:14

标签: javascript ecmascript-6

function foo([a,b,c]) {
  console.log(a,b,c);
}

foo(1,2,3);

为什么上面的代码抛出未定义的不是函数?

2 个答案:

答案 0 :(得分:4)

您可以散布参数并在函数内部分配变量

const foo = (...args) => {
  const [a,b,c] = args
  console.log(a,b,c);
}

foo(1,2,3);

答案 1 :(得分:4)

因为js引擎与参数中的任何可迭代对象都不匹配。

看这个例子

function foo([a, b, c]) {
  console.log(a, b, c);
}

// This time, we are passing an array which is iterable
foo([1, 2, 3]);

一种替代方法是使用Spread语法,然后使用函数apply将整个参数集作为单独的参数传递给函数console.log

function foo(...params) {
  console.log.apply(undefined, params);
}

foo(1, 2, 3);