Javascript,使用包含其名称的字符串引用变量?

car*_*per 19 javascript variables syntax

有没有办法用包含其名称的字符串引用Javascript变量?

例:

var myText = 'hello world!';
var someString = 'myText';

//how to output myText value using someString?
Run Code Online (Sandbox Code Playgroud)

fri*_*edo 45

你可以使用eval它来做,虽然我试图不惜一切代价避免这种事情.

alert(eval(someString));
Run Code Online (Sandbox Code Playgroud)

如果您发现自己需要这样做,更好的方法是使用哈希表.

var stuff = { myText: 'hello world!' };
var someString = 'myText';
alert( stuff[someString] );
Run Code Online (Sandbox Code Playgroud)

  • 我一直看到人们说要避免使用 eval 来解决这个问题和类似的问题——但为什么呢? (3认同)
  • 如果我宁愿使用 window['varname']; 方法,我将如何使用对象来做到这一点?`var obj = {'eleID':'varname'}; for (var key in obj) { window[obj[key]]; }` 这似乎不起作用:( (2认同)
  • @Tron主要是因为你不控制someString,但你让它像你一样运行。它可能是恶意的、存在编码错误或其他引发噩梦的问题。想象一下 someString 是“while(1){}”或将数据发送到恶意服务器的脚本。 (2认同)

CMS*_*CMS 29

如果该变量位于全局范围内,则可以在全局对象上使用括号表示法:

var myText = 'hello world!';
var someString = 'myText';

alert(window[someString]);
Run Code Online (Sandbox Code Playgroud)

  • 惊人的答案保存使用eval +1愿我能+ 10 (3认同)