设置javascript变量=";变量";
我有一个名为设置javascript变量=";变量";,javascript,variables,Javascript,Variables,我有一个名为temp的javascript变量 最终,temp将等于许多字符串中的一个,我们现在假设它等于“stack” 如何动态地将变量(在本例中为现有全局变量)设置为等于字符串“stack” 因此,如果在另一个时间点,temp设置为“溢出”,我如何设置overflow=“overflow” 谢谢你的帮助 我看到一些答案提到了eval,还有一些提到了使用括号~这个[变量],但似乎无法理解这一点。运行这个,看看会发生什么 var x = "something"; window[x] = x;
temp
的javascript变量
最终,temp
将等于许多字符串中的一个,我们现在假设它等于“stack”
如何动态地将变量(在本例中为现有全局变量)设置为等于字符串“stack”
因此,如果在另一个时间点,temp
设置为“溢出”
,我如何设置overflow=“overflow”
谢谢你的帮助
我看到一些答案提到了
eval
,还有一些提到了使用括号~这个[变量]
,但似乎无法理解这一点。运行这个,看看会发生什么
var x = "something";
window[x] = x;
alert(window.something);
这是因为javascript对象的行为类似于哈希表
但最好不要使用窗口对象,否则可能会覆盖实际需要的内容。实现这一点的最简单方法是创建一个对象来保存这些动态变量赋值
// 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']
访问“overflow”。从技术上讲,您可以通过使用窗口
对象而不是临时变量
,以这种方式分配全局变量,但总的来说这是个坏主意。我不知道您的意思。可能是重复的谢谢,杰克!正如我所期待的,它“有效”,因为全局变量是作为全局对象的属性添加的。没有其他执行上下文(函数或eval)会这样做。