2017-04-24 71 views
1

Noob問題在這裏:)有什麼辦法來訪問在JavaScript中動態引用的變量名的值?Javascript - 訪問變量的值與動態名稱參考

我試了一下:

var var1 = "foo"; 
var var2 = "bar"; 
var i = 1; 
i++; 

console.log(`var${i}`); // give me "var2" 
console.log(typeof `var${i}`); // == srting` 

我要訪問的值「富」或「棒」,但我想的東西,因爲我得到了變量的唯一名字?

我在堆棧上的第一個問題,所以如果它不完美,讓我知道我會添加細節,謝謝!

+1

我不認爲你可以做到這一點。但是,如果你的值是如此相關以至於你在它們後面命名變量並附加一個數字,爲​​什麼不使用數組並將值存儲在數組中並通過索引訪問它們? 'var valueArray = [「foo」,「bar」]; var i = 0;我++; console.log(valueArray [i]);' – Ken

+0

'var var1 =「hello」; \「$ {eval(」var「+ 1)} \」'會工作「(或'window [」var「+ 1]'全局變量) - 這基本上是另一種方式:」我怎麼能通過名字獲得變量的值?「隱藏在插值內部,這在別處得到了回答。請注意,'\'.. \''的內容被視爲表達式*。我建議使用適當的集合,而不是這種特殊。 – user2864740

+0

即。請參閱http://stackoverflow.com/questions/4399794/access-value-of-javascript-variable-by-name和類似的 – user2864740

回答

2

如果您的變量是在全局範圍內定義的,則它們是窗口對象的屬性。

var var1 = "foo"; 
 
var var2 = "bar"; 
 
var i = 1; 
 
i++; 
 

 
console.log(window[`var${i}`]);

可能是一個更好的方法是創建一個數據對象和存儲變量的那個屬性。

var data = {}; 
 
data.var1 = "foo"; 
 
data.var2 = "bar"; 
 

 
var i = 1; 
 
i++; 
 

 
console.log(data[`var${i}`]);

+0

謝謝!我會嘗試數據對象,因爲我認爲這對我來說是最好的。 –

0

您可以使用eval執行動態代碼。

var var1 = "foo"; 
 
var var2 = "bar"; 
 
var i = 1; 
 
i++; 
 

 
console.log(eval('(var' + i + ')')); // give me "var2" 
 
console.log(eval('(typeof(var' + i + '))')); // == srting`

+0

謝謝你的回答! –