是否存在按变量访问ES6常量的问题?
为了前夫。
const OPEN_TAB = 0;
const CLOSE_TAB = 1;
let action = 'OPEN';
console.log(window[`${action}_TAB`]); <-- something like that发布于 2016-12-23 02:44:41
不,没有(*)。const声明不会成为全局对象的属性。
您需要找到另一个解决方案,例如创建一个对象并冻结它(使其不可变):
const TAB = Object.freeze({
OPEN: 0,
CLOSE: 1,
});
console.log(TAB[action]);我认为依赖全局变量(即var)成为全局对象的属性是错误的设计。如果您想以名称查找某项内容,您确实应该有类似于地图或记录的东西(如上面所示)。
你可以用eval.
发布于 2016-12-24 14:19:50
对于当前的代码,可以使用eval (https://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea),如下所示:
const OPEN_TAB = 0;
const CLOSE_TAB = 1;
let action = 'OPEN';
console.log( eval (action+'_TAB') );
另一种方法是向const假设一个新对象,然后您可以像访问JavaScript对象的一般方法一样轻松地访问JavaScript:
const TAB = {
OPEN:0,
CLOSE:1
};
let action = 'OPEN';
console.log(TAB[action]);
https://stackoverflow.com/questions/41294494
复制相似问题