2013-10-25 49 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