JavaScript按名称获取当前作用域中的变量
我有一个变量和一个变量名字符串JavaScript按名称获取当前作用域中的变量,javascript,Javascript,我有一个变量和一个变量名字符串 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[stri
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
,但我认为正确的方法是使用对象:
函数工厂(字符串){
var变量={foo:'bar'};
log(字符串+”等于“+变量[字符串])
}
我知道我不知道,但我仍在尝试获取变量。哦,我没想到!你也可以只做eval('foo')
?@JacksonGariety:看起来像是一个XY问题,你通常不会在JS中这样做。。。你到底想做什么?更重要的是什么?@JacksonGarietyeval
只会运行一些代码eval('foo')
不会做任何事情。我同意@elclans的说法,这很奇怪。