2013-10-25 47 views
-3

我甚至不知道如何说出这个,可能是为什么我无法在谷歌中找到答案。Javascript如何强制字符串+变量作为变量进行评估

当代码运行时,currentCardRow将等于1,因此它应该是cardSelected1,它是console.log中显示的内容。我需要它更进一步,因为cardSelected1是一个变量,我需要它在控制台日志中将显示评估为邀请。邀请是cardSelected1的变量示例。

我不确定正确的语法是什么使这发生。

var currentCardSelected = "cardSelected" + currentCardRow; 

感谢您的帮助!

+0

为什么你不使用数组? – Barmar

+0

那么'window.cardSelected1'会等于什么?你在问什么? –

+0

你选择的单词混淆了你的问题。 “作为变量进行评估”是什么意思?你的单行代码片段也无助于澄清。对不起 - 这一点并不清楚,除非你编辑它,否则可能会以此为基础关闭。 – 2013-10-25 03:43:46

回答

2

JavaScript有一个Eval()函数,它允许您将字符串评估为JavaScript代码。

例如

var bar = "123"; 
var foo = "bar"; 
console.log(eval(foo)); 

将打印 “123” 到控制台。

有关eval的更多信息,可以查阅MDN文档。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval

一般来说,使用eval()被认为是它使代码难以读懂穷人的做法。有可能更优雅的解决方案来实现你所描述的,但是,eval将解决你目前的问题。

+0

这很好用!谢谢你的帮助!!!! –

+2

不,foo的内容是一个包含变量栏名称的字符串。 Foo将插值到bar,因此eval将返回“123”; –

+0

'eval'通常被认为是不好的做法:a)因为它使代码难以阅读和维护,以及b)因为它会引入安全漏洞。 – 2013-10-25 03:48:19

0
var currentCardSelected = eval("cardSelected" + currentCardRow); 

这就是我的问题是如何解决的。

+0

恐怕这是一个可怕的解决方案。如果你需要这个,你的代码中会有严重的设计问题。你能告诉我们为什么你需要这个吗? – plalx