JavaScript通过名称获取当前作用域中的变量

JavaScript get variable in current scope by name

本文关键字:作用域 变量 获取 JavaScript      更新时间:2023-10-20

所以我有一个变量和一个变量名为的字符串

function Factory(string) {
  var foo = 'bar'
  console.log("foo is equal to " + this[string])
}

如果变量所在的对象是当前对象,我如何从字符串文本中获取变量?

我原以为代码会起作用,但发生了以下情况:

var f = new Factory('foo') //=> "foo is equal to undefined"

如何从字符串文字中获取变量?

this[string]假设您有一个变量this.foo,但您没有。


如果你愿意,你可以做一些eval操作,这将在你的情况下起作用:

function Factory(string) {
  var foo = 'bar'
  console.log("foo is equal to " + eval('(function(){return ' + string + '})()'))
}

虽然可以使用eval,但我认为正确的方法是使用对象:

function Factory(string) {
  var variables = {foo: 'bar'};
  console.log(string + " is equal to " + variables[string])
}