首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否存在按变量访问es6常量的问题?

是否存在按变量访问es6常量的问题?
EN

Stack Overflow用户
提问于 2016-12-23 02:41:05
回答 2查看 58关注 0票数 3

是否存在按变量访问ES6常量的问题?

为了前夫。

代码语言:javascript
复制
const OPEN_TAB = 0;
const CLOSE_TAB = 1;

let action = 'OPEN';

console.log(window[`${action}_TAB`]); <-- something like that
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-23 02:44:41

不,没有(*)。const声明不会成为全局对象的属性。

您需要找到另一个解决方案,例如创建一个对象并冻结它(使其不可变):

代码语言:javascript
复制
const TAB = Object.freeze({
  OPEN: 0,
  CLOSE: 1,
});

console.log(TAB[action]);

我认为依赖全局变量(即var)成为全局对象的属性是错误的设计。如果您想以名称查找某项内容,您确实应该有类似于地图或记录的东西(如上面所示)。

你可以用eval.

票数 9
EN

Stack Overflow用户

发布于 2016-12-24 14:19:50

对于当前的代码,可以使用eval (https://stackoverflow.com/questions/86513/why-is-using-the-javascript-eval-function-a-bad-idea),如下所示:

代码语言:javascript
复制
const OPEN_TAB = 0;
const CLOSE_TAB = 1;

let action = 'OPEN';

console.log( eval (action+'_TAB') );

另一种方法是向const假设一个新对象,然后您可以像访问JavaScript对象的一般方法一样轻松地访问JavaScript:

代码语言:javascript
复制
const TAB = {
OPEN:0,
CLOSE:1
};


let action = 'OPEN';


console.log(TAB[action]);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41294494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档