我可以在es6数组解构中使用什么作为占位符?

mik*_*1aj 4 javascript syntactic-sugar ecmascript-6

我不喜欢, ,这里:

let colors = [ "red", "green", "blue" ];
let [ , , thirdColor] = colors;
Run Code Online (Sandbox Code Playgroud)

我可以使用一些占位符字符吗?我宁愿不介绍未使用的变量,我只想让代码看起来更清晰.现在我唯一可以考虑的是评论:

let [/*first*/, /*second*/, thirdColor] = colors;
Run Code Online (Sandbox Code Playgroud)

有更好的想法吗?

Fel*_*ing 8

JS中没有占位符的概念.通常_用于此目的,但实际上你不能在一个声明中多次使用它:

let [_, secondColor] = colors; // OK
let [_, _, thirdColor] = colors; // error
Run Code Online (Sandbox Code Playgroud)

此外,_实际上可能会在您的代码中使用,因此您必须提出其他名称等.

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

let thirdColor = colors[2];
let {2: thirdColor, 10: eleventhColor} = colors;
Run Code Online (Sandbox Code Playgroud)

  • `[_,_,thirdcolor] = ....`和`let [_,_,thirdColor] = ...`是不同的.第一个很好,因为它只是一个变量赋值,但第二个是变量声明,`let`不允许重新声明.在这种情况下,Firefox也会抛出错误:`(function(){"use strict"; let [_,_,] = [1,2];}())`给出`TypeError:let _`的重新声明. (2认同)