2014-04-09 23 views
1

我得到这个代码:合并2个变量成1串,然后把这个字符串作为变量

var currentsettimevarstring = 'settimevar' + c, 
currentsettimevar = currentsettimevarstring; 

我想的currentsettimevarstring输出为settimevar1(或2,3,4,等) 和currentsettimevar的输出作为变量的内容settimevar1

这怎么办?

+0

我想'eval' ......但是这不是一个好主意。你为什么做这个? – tymeJV

+0

这对于比如说代码混淆比赛或者练习某种元编程来说是合理的。但是你应该意识到在“普通”代码中这是不合理的。有很多更好的方法可以完成......无论你想要完成什么。 –

回答

1

您应该能够使用eval这个:var currentsettimevar = eval('sitetimevar' + c)

请记住,使用eval可以be a bad idea.

1

如果settimevar变量是全局变量,可以使用currentsettimevarstring引用它们的window对象作为重点:

var currentsettimevar = window[currentsettimevarstring]; 

如果不是全局变量,那么你可能要考虑将它们存储在数组或PR可以通过键引用的对象的操作。

var settimevar = ['a', 'b', 'c', 'd', 'e']; 
var c = 5; 
var currentsettimevar = settimevar[c - 1]; 
0

这是一个duplicate

基本上,JavaScript具有全局范围,您可以通过'window'变量访问全局范围,并像定义任何其他集合一样索引定义的变量。

var c = 5; 
var settimevar5 = "Some String"; 
var currentsettimevarstring = 'settimevar' + c, 
var currentsettimevar = window[currentsettimevarstring]; 

currentsettimevar现在应该是 “一些字符串”

+0

只有在全球范围内才有效......或者如果他们的变量或成员脱离了另一个对象......没有迹象表明情况如此。我不明白这是一个重复的问题。 –

+0

@justnS:因为它的问题大致相同,所以如果将变量的名称作为字符串,如何获取变量的值。 –

+0

确实。我确实说过这适用于全球范围以及任何其他收藏。如果你在一个函数中,关闭,那么你可以使用this []而不是window []来实现同样的功能。 – Joe

0

使用数组来代替:

var settimevar = ['value1', 'value2', 'value3'], 
    c = 0, /* for example */ 
    currentsettimevar = settimevar[c]; 
相关问题