function foo([a,b,c]) {
console.log(a,b,c);
}
foo(1,2,3);
为什么上面的代码抛出未定义的不是函数?
答案 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);