2012-04-30 25 views
2

我們可以通過他們的名字這樣叫變量:訪問值

var name="a"; 
var a=4; 
eval("alert("+name+")");//this will alert 4 

但是我聽說是不推薦的eval。有沒有一種方法可以通過名稱調用變量而不用eval?

回答

1

如果變量是全局變量,那麼可以執行window[name],否則不會。 「變量變量」是一個PHP的東西。

如果你想這樣做,改變你的程序,以便你的變量存儲在一個對象中。

var vars = { 
    a: 4 
}; 
var name = "a"; 

alert(vars[name]); 
+1

+1爲窗口[名稱] –

4

你是對的,eval是絕對不推薦。一種常見的辦法就是讓他們一個對象的屬性,然後用方括號來訪問它們:

var name = "a"; 
var myObj = { 
    a: 4 
}; 
alert(myObj[name]); 

這裏有一個working example

+0

+1一個exaplanation這種方法是什麼解決 - 將有所幫助:) –