Javascript java脚本中的rest/spread

Javascript java脚本中的rest/spread,javascript,node.js,Javascript,Node.js,有人能解释一下解决方案输入中的([head,[headTail,[headTail,…tailTail]])在做什么吗?由于声誉不好,我不能评论和询问作者 他正在编写一个函数,该函数在输入中接受一个数组(基于他调用它的位置),但尽管我对Java脚本中的rest和spread知之甚少,但我还是搞不懂这一点 此表达式是在第一个元素(head)、第二个元素(headTail)和其余元素(tailTail)中“解构”给定数组 这个更简单的例子应该更容易理解: let [head, ...tail] =

有人能解释一下解决方案输入中的
([head,[headTail,[headTail,…tailTail]])
在做什么吗?由于声誉不好,我不能评论和询问作者

他正在编写一个函数,该函数在输入中接受一个数组(基于他调用它的位置),但尽管我对Java脚本中的restspread知之甚少,但我还是搞不懂这一点

此表达式是在第一个元素(head)、第二个元素(headTail)和其余元素(tailTail)中“解构”给定数组

这个更简单的例子应该更容易理解:

let [head, ...tail] = [1, 2, 3, 4]; // head = 1, tail = [2, 3, 4]

在您的示例中,这个简单的解构只是再次应用于尾部。

正如Lex82正确回答的那样,这是一种解构数组的方法。所以,如果你有

const [head, ...tail] = [1, 2, 3, 4];
您的意思是将第一个元素分配给
头部
,将其余元素分配给
尾部
。所以,
head=1
tail=[2,3,4]

在你所引用的答案中,他们更进一步。他们需要第一个元素(头部)、第二个元素(尾部的头部)和其余元素

所以他们想要的是
[headTail,…tailTail]=tail

现在,如果我们在第一条语句中替换尾部,它将变成:

[head, ...[headTail, ...tailTail]] = [1,2,3,4]
其中
head=1
headTail=2
tailTail=[3,4]


您可以简单地执行以下操作:


这将产生同样的结果

仅供参考:这种代码的宁静(
[head,[headTail,[headTail,[tailTail]]]
)气味难闻。感谢您完整而清晰的回答!我猜是第二个括号一直让我困惑。
[head, headTail, ...tailTail] = [1,2,3,4]