无论如何通过变量访问es6常量?

Ida*_*lan 3 javascript syntax ecmascript-6

无论如何通过变量访问ES6常量?

对于前者

const OPEN_TAB = 0;
const CLOSE_TAB = 1;

let action = 'OPEN';

console.log(window[`${action}_TAB`]); <-- something like that
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 9

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

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

const TAB = Object.freeze({
  OPEN: 0,
  CLOSE: 1,
});

console.log(TAB[action]);
Run Code Online (Sandbox Code Playgroud)

我认为依赖全局变量(即var)成为全局对象的属性无论如何都是糟糕的设计.如果你想通过名字查找一些东西,你真的应该有一些像地图或记录(如上所示).


*:嗯,你可以用eval......