【发布时间】:2017-02-02 01:45:06
【问题描述】:
您可以使用解构赋值来定义 ES6 中的枚举,如下所示:
var [red, green, blue] = [0, 1, 2];
相反,我希望解构赋值的右侧是动态的。例如:
var MAX_ENUM_SIZE = 32;
var ENUM = new Array(MAX_ENUM_SIZE);
for (var i = 0; i < MAX_ENUM_SIZE; i++) ENUM[i] = i;
var [red, green, blue] = ENUM;
不幸的是,这似乎是一个 hack。如果我将来想要更大的枚举怎么办?因此,我正在考虑使用带有迭代器的解构赋值,如下所示:
var [red, green, blue] = enumeration(/* I don't want to specify size */);
但是,我认为不可能将解构赋值与迭代器一起使用[需要引用]。有没有办法实现这个目标?
【问题讨论】:
-
为什么这是个好主意?
-
你只需要前三个值和三个目标变量,
-
不那么脆弱的代码?如果有人为枚举添加了一个新的替代项并且忘记更新右侧,那么您可能会收到错误消息。但是,如果右侧是动态的,则不必担心。
-
您是否尝试动态创建变量名称以对应
enumeration返回的未知数量的元素? -
@AaditMShah 您希望枚举与 LHS 上指定的 var 名称的数量相匹配吗?
标签: javascript enums iterator ecmascript-6 destructuring