Javascript 在es6阵列分解中,我可以使用什么作为占位符?

Javascript 在es6阵列分解中,我可以使用什么作为占位符?,javascript,ecmascript-6,syntactic-sugar,Javascript,Ecmascript 6,Syntactic Sugar,我不喜欢这里的,: let colors = [ "red", "green", "blue" ]; let [ , , thirdColor] = colors; 我可以使用一些占位符字符吗?我不想引入未使用的变量,我只是想让代码看起来更清晰。现在我唯一能想到的就是评论: let [/*first*/, /*second*/, thirdColor] = colors; 有更好的主意吗?JS中没有占位符的概念。通常情况下,\uu用于此,但实际上不能在一个声明中多次使用它: let [_,

我不喜欢这里的

let colors = [ "red", "green", "blue" ];
let [ , , thirdColor] = colors;
我可以使用一些占位符字符吗?我不想引入未使用的变量,我只是想让代码看起来更清晰。现在我唯一能想到的就是评论:

let [/*first*/, /*second*/, thirdColor] = colors;

有更好的主意吗?

JS中没有占位符的概念。通常情况下,
\uu
用于此,但实际上不能在一个声明中多次使用它:

let [_, secondColor] = colors; // OK
let [_, _, thirdColor] = colors; // error
另外,
\uu
实际上可能在代码中使用,因此您必须想出另一个名称,等等

最简单的方法可能是直接访问第三个元素:

let thirdColor = colors[2];
let {2: thirdColor, 10: eleventhColor} = colors;

[\uu,\uu,thirdColor]
是否真的会产生错误?Firefox的实现允许它;我还没有深入到规范中去看看这是否是错误的。
[[uuu,[uuu,thirdcolor]=..
让[\uu,[uuu,thirdcolor]=..
是不同的。第一个很好,因为它只是一个变量赋值,但第二个是一个变量声明,
let
不允许重新声明。Firefox在这种情况下也会抛出一个错误:
(function(){“use strict”;let[u,u,]=[1,2];}())
gives
TypeError:let
的重新声明。(事实上,我可以理解,当变量具有顶级可见性时,
let
并不是特别有意义,因此我可以理解为什么会有不同的行为。)当我将其移动到函数或块中时,它确实会抛出错误。