我有一个名为temp
.
最终,temp
将等于许多字符串之一,假设现在它等于"stack"
。
如何动态设置变量(在这种情况下stack
,这是一个现有的全局变量)等于字符串"stack"
?
因此,如果在另一个时间点temp
设置为"overflow"
,我该如何设置overflow = "overflow"
?
谢谢你的帮助!
我已经看到一些答案提到eval
,而其他人提到使用括号 ~ this[variable]
,但似乎无法弄清楚..
我有一个名为temp
.
最终,temp
将等于许多字符串之一,假设现在它等于"stack"
。
如何动态设置变量(在这种情况下stack
,这是一个现有的全局变量)等于字符串"stack"
?
因此,如果在另一个时间点temp
设置为"overflow"
,我该如何设置overflow = "overflow"
?
谢谢你的帮助!
我已经看到一些答案提到eval
,而其他人提到使用括号 ~ this[variable]
,但似乎无法弄清楚..
运行它,看看会发生什么
var x = "something";
window[x] = x;
alert(window.something);
这是有效的,因为 javascript 对象的行为类似于哈希表
但是你最好不要使用 window 对象,否则你可能会覆盖你真正需要的东西。
实现这一点的最简单方法是创建一个对象来保存这些动态变量分配。
// 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
object 而不是 以这种方式分配全局变量tempVars
,但这通常是一个坏主意。