我有一个名为temp
的javascript变量。
最终,temp
将等于众多字符串中的一个,我们现在说它等于"stack"
。
如何将变量(在本例中为stack
,这是一个现有的全局变量)设置为动态地等于字符串"stack"
?
因此,如果在其他时间点,temp
设置为"overflow"
,我该如何设置overflow = "overflow"
?
感谢您的帮助!
我看到一些答案提及eval
而其他人提到使用括号〜this[variable]
,但似乎无法弄清楚这一点......
答案 0 :(得分:1)
运行它,看看会发生什么
var x = "something";
window[x] = x;
alert(window.something);
这是有效的,因为javascript对象就像哈希表
但你最好不要使用窗口对象,否则你可能会覆盖你实际需要的东西。
答案 1 :(得分: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.overflow
或tempVars['overflow']
访问“溢出”。从技术上讲,可以使用window
对象而不是tempVars
以这种方式分配全局变量,但这通常是一个坏主意。