具有解构数组默认参数的函数的非数组参数给出 TypeError
Non-array argument to function with destructured Array default parameters gives a TypeError
我已经定义了函数prod
,它利用了 ES6 的默认参数和解构:
function prod([a, b, c] = [1, 2, 3]) {
console.log(a * b * c);
}
当不带参数调用时,它会按预期将 6
记录到控制台。
prod() // 6
使用参数数组调用时,它会记录正确的产品:
prod([2, 3, 4]) // 24
当使用多个参数调用时,会抛出错误:
prod(2, 3, 4) // Uncaught TypeError: undefined is not a function(…)
为什么会抛出 undefined is not a function
错误?
编辑
我明白为什么它会抛出错误。我不明白的是为什么它会抛出那个特定的错误。
问题是它需要一个参数数组,而不是 3 个单独的参数。所以这样做:prod([1, 2, 3])
会给你预期的答案。
当我在 Firefox 中 运行 prod(1, 2, 3)
时出现此错误:TypeError: [Symbol.iterator] is not a function
.
该函数期望使用@@iterator 方法返回一个可交互对象。因为那个方法不存在(因此不是一个函数)你得到 is not a function error
我已经定义了函数prod
,它利用了 ES6 的默认参数和解构:
function prod([a, b, c] = [1, 2, 3]) {
console.log(a * b * c);
}
当不带参数调用时,它会按预期将 6
记录到控制台。
prod() // 6
使用参数数组调用时,它会记录正确的产品:
prod([2, 3, 4]) // 24
当使用多个参数调用时,会抛出错误:
prod(2, 3, 4) // Uncaught TypeError: undefined is not a function(…)
为什么会抛出 undefined is not a function
错误?
编辑
我明白为什么它会抛出错误。我不明白的是为什么它会抛出那个特定的错误。
问题是它需要一个参数数组,而不是 3 个单独的参数。所以这样做:prod([1, 2, 3])
会给你预期的答案。
当我在 Firefox 中 运行 prod(1, 2, 3)
时出现此错误:TypeError: [Symbol.iterator] is not a function
.
该函数期望使用@@iterator 方法返回一个可交互对象。因为那个方法不存在(因此不是一个函数)你得到 is not a function error