在Javascript中的“variables”variables?

我知道在PHP中可能有“可变”variables。 例如

$x = "variable"; $$x = "hello, world!"; echo $variable; // displays "hello, world!" 

这是可能的JavaScript? 怎么做?

没有单一的解决scheme(好吧,有eval ,但不要认真考虑)。 可以通过windowdynamic访问全局variables,但对于函数本地variables不起作用。

几乎总是比使用variablesvariables更好的解决scheme! 相反,您应该查看数据结构并为您的问题select正确的数据结构 。

如果你有一组固定的名字,例如

 // BAD var foo = 42; var bar = 21; var key = 'foo'; console.log(eval(key)); 

如果你不顾一切地做到这一点,你可以尝试使用eval():

 var data = "testVariable"; eval("var temp_" + data + "=123;"); alert(temp_testVariable); 

或者使用窗口对象:

 var data = "testVariable"; window["temp_" + data] = 123; alert(window["temp_" + data]); 

http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript

要只用一个string在javascript中引用一个variables,你可以使用

 window['your_variable_name'] 

您也可以设置和引用variables以及variables中的对象。

当然可以,但不要。 variables必须是全局的。

 var killingFunction = 'alert' var killMeNow = 'please' var please = 'You have been killed!' this[killingFunction](this[killMeNow]) 
 var vars = {}; var var_name = "str"; vars[var_name] = "working"; console.log(vars["str"]); 

您可以使用JavaScript eval(str)函数。

这个函数做的是将提供的string转换成JS代码,然后执行它。

例如:

 eval("console.log('hello world')"); // Logs hello world 

所以要把它用作variablesvariables,你可以这样做:

 var a = "hello"; var hello = "world"; console.log(a + " " + eval(a)); // Logs hello world 

这将产生完全相同的输出:

 console.log(a + " " + hello); // Logs hello world 

(例子取自PHP手册的variablesvariables 。)

我们可以这样使用。

 var objectName[key]{ 'someDataName':'thatData', 'someOtherDataName':'thisData' } 

如果你想获得价值的价值,所以你可以使用循环

 for(key in objectName){ objectName[key].someDataName; objectName[key].someOtherDataName; }