無論如何通過變量訪問ES6常量嗎?無論如何通過變量訪問es6常量嗎?
例如,
const OPEN_TAB = 0;
const CLOSE_TAB = 1;
let action = 'OPEN';
console.log(window[`${action}_TAB`]); <-- something like that
無論如何通過變量訪問ES6常量嗎?無論如何通過變量訪問es6常量嗎?
例如,
const OPEN_TAB = 0;
const CLOSE_TAB = 1;
let action = 'OPEN';
console.log(window[`${action}_TAB`]); <-- something like that
不存在(*)。 const
聲明不會成爲全局對象的屬性。
你需要找到另一種解決方案,如創建一個對象,並凍結它(使它不可改變的)
const TAB = Object.freeze({
OPEN: 0,
CLOSE: 1,
});
console.log(TAB[action]);
我要說的卻是依靠全局變量(即var
)成爲無論如何,全局對象的屬性都是糟糕的設計。如果你想按名稱查找某個東西,你應該有一些地圖或記錄(如上所示)。
*:嗯,你可以使用eval
...
對於你目前的代碼,你可以使用eval
(But take care!),它應該是這樣的:
const OPEN_TAB = 0;
const CLOSE_TAB = 1;
let action = 'OPEN';
console.log(eval (action+'_TAB'));
另一種方式是假定一個新對象的const
,那麼你可以很容易地訪問const
像常見的方式,你可以訪問到JavaScript對象:
const TAB = {
OPEN:0,
CLOSE:1
};
let action = 'OPEN';
console.log(TAB[action]);