2016-12-23 2 views

Antwort

9

Nein gibt es nicht (*). const Deklarationen werden keine Eigenschaften des globalen Objekts.

Sie müssen eine andere Lösung zu finden, wie ein Objekt erstellen und einfrieren (es unveränderlich zu machen):

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

console.log(TAB[action]); 

Ich würde argumentieren, dass auf globale Variablen (dh var) unter Berufung immer Eigenschaften des globalen Objekts sind ohnehin schlecht. Wenn Sie etwas nach Namen suchen möchten, sollten Sie so etwas wie eine Karte oder einen Datensatz haben (wie oben gezeigt).


*: Nun, könnten Sie eval ...

0

Für den aktuellen Code, den Sie haben, können Sie eval verwenden (But take care!), es so sein sollte:

const OPEN_TAB = 0; 
 
const CLOSE_TAB = 1; 
 

 
let action = 'OPEN'; 
 

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


Der andere Weg ist, ein neues Objekt in die const zu übernehmen, dann können Sie die const leicht zugänglich machen, wie die gemeinsame Weg, um JavaScript-Objekte zugreifen können:

const TAB = { 
 
OPEN:0, 
 
CLOSE:1 
 
}; 
 

 

 
let action = 'OPEN'; 
 

 

 
console.log(TAB[action]);

Verwandte Themen