【发布时间】:2019-07-07 20:52:58
【问题描述】:
我有以下问题:
const value1 = "some value";
var value2 = "some value";
console.log(window["value1"]); // undefined
console.log(window["value2"]); // some value
我知道 const 是块作用域的,这就是我无法通过 window 对象访问它的原因。我的问题是,有没有办法只使用字符串标识符来访问 const 变量。
如果我只能访问“value1”,我如何获得实际 value1 的句柄?有没有可能?
【问题讨论】:
-
我不确定是否可以为此使用 eval,但我宁愿不使用 eval。
-
是的,你可以使用
eval,是的,你不应该那样做。为什么不干脆做console.log(x == "value1" ? value1 : …)?为什么您甚至需要通过字符串访问局部变量,为什么不使用适当的数据结构(如Map或对象)? -
如果你必须使用字符串来访问这样的变量,为什么不直接使用对象呢?
const constants = { value1: "some value" };然后你可以使用console.log(constants["value1"])获取它。 -
@HereticMonkey,这正是我所做的。我会暂时使用这个。我仍然很好奇它是否可能,但可能不是因为它是块范围的。这可能是一个草率的问题。
标签: javascript scope constants