gpt4 book ai didi

javascript - 函数参数中的数组解构

转载 作者:数据小太阳 更新时间:2023-10-29 04:43:20 27 4
gpt4 key购买 nike

我这里有一些与数组解构相关的东西,但我并不完全理解。

在下面的例子中:

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

foo( 1, 2, 3 );

当我运行它时,出现以下错误:

Uncaught TypeError: undefined is not a function

现在,我不是在质疑这样一个事实,即它不会像人们预期的那样输出 1, 2, 3,因为实际上只有第一个值 1 会被解构( a = 1[0], b = 1[1], c = 1[2]).

但事情是这样的:

我可以完美地编写 1[0]、1[1]、1[2],并且我对其中的每一个都得到了 undefined

那为什么我上面写的 foo 函数会抛出异常,而不是像我期望的那样简单地返回 3 次 undefined

确实,如果我按如下方式编写 bar,我会得到 3 个 undefined,这是应该发生的。

function bar() {
console.log( 1[0], 1[1], 1[2] )
}

bar();
// undefined undefined undefined

谁能告诉我 JS 在第一个 foo() 中做了什么以及为什么输出不是 undefined undefined undefined

最佳答案

使用数组模式进行解构在后台使用迭代,即被解构的值必须是可迭代的。

事实上,在 Firefox 中,错误消息似乎更具指示性:

TypeError: (destructured parameter) is not iterable

这就是您对 1[0]、1[1]、1[2] 进行比较时出错的地方:不需要 1可迭代。

更正确的比较是这样的:

console.log([...1]);
// or:
const [a, b, c] = 1;

...该代码将失败。

关于javascript - 函数参数中的数组解构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326392/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com