在Javascript中的“variables”variables?
我知道在PHP中可能有“可变”variables。 例如
$x = "variable"; $$x = "hello, world!"; echo $variable; // displays "hello, world!"
这是可能的JavaScript? 怎么做?
没有单一的解决scheme(好吧,有eval
,但不要认真考虑)。 可以通过window
dynamic访问全局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; }