2012-11-14 141 views
0

我有一個javascript變量tempset javascript variable =「variable」

最終,temp將等於許多字符串中的一個,假設現在它等於"stack"

如何可以設置變量(在這種情況下stack,這是現有的全局變量)爲等於字符串"stack",動態?

因此,如果在另一時間點,temp設置爲"overflow",如何設置overflow = "overflow"

感謝您的幫助!

我已經看到了一些答案提到eval和使用支架等提〜this[variable],但似乎無法想出解決辦法..

+0

我不知道你的意思。 – boiledwater

+1

[「Javascript中變量」變量的可能重複?](http://stackoverflow.com/questions/5187530/variable-variables-in-javascript) –

+0

謝謝,傑克!我正在尋找 –

回答

1

實現此目的的最簡單方法是創建一個對象來保存這些動態變量賦值。

// object to hold temporary variables 
var tempVars = {}; 

// as per your example, we set temp to 'overflow' 
var temp = 'overflow'; 

// now we can set tempVars.overflow 
tempVars[temp] = temp; 

你一個那麼訪問 '溢出' 與任何tempVars.overflowtempVars['overflow']。從技術上講,你可以使用window而不是tempVars這種方式來分配全局變量,這樣可以,但這通常是一個壞主意。

1

運行這一點,看看會發生什麼

var x = "something"; 

window[x] = x; 

alert(window.something); 

該作品因爲JavaScript對象的行爲像哈希表

但是你最好不要使用窗口對象,否則你可能會覆蓋你實際需要的東西。

+0

爲了清晰起見 – NoPyGod

+0

相反,它「起作用」,因爲全局變量被添加爲全局對象的屬性。沒有其他執行上下文(函數或eval)會這樣做。 – RobG

相關問題