Javascript 获取存储在另一个变量中的变量名的值
不使用eval。。。我想看看我是否能从一个变量中得到一个值,这个值存储在另一个变量中。例如从varA获取'ValueC'的值,其中varA='varB'和varB='ValueC' 用户将输入一个字符串,下面模拟为名为“UserSpecified”的变量。他们可以输入任何字符,如果与现有变量不匹配。。。好吧,我只返回null 我意识到我可以用eval()来做这件事,但evals似乎不受欢迎,我正试图用更好的方式来做 我尝试了ES2015+接受的答案,但没有任何成功。我是否遗漏了什么,还是应该坚持评估Javascript 获取存储在另一个变量中的变量名的值,javascript,eval,Javascript,Eval,不使用eval。。。我想看看我是否能从一个变量中得到一个值,这个值存储在另一个变量中。例如从varA获取'ValueC'的值,其中varA='varB'和varB='ValueC' 用户将输入一个字符串,下面模拟为名为“UserSpecified”的变量。他们可以输入任何字符,如果与现有变量不匹配。。。好吧,我只返回null 我意识到我可以用eval()来做这件事,但evals似乎不受欢迎,我正试图用更好的方式来做 我尝试了ES2015+接受的答案,但没有任何成功。我是否遗漏了什么,还是应该坚持
a=“是”;
让b=“是”;
让c=“海”;
让userSpecified=“a”;
设obj={userSpecified};
让parm='userSpecified';
console.log(eval(用户指定));//显示“赞成”
console.log(obj[parm]);//这将显示“a”,但我希望它显示“yes”
如果您可以重新构造代码,使对象保存值,那么它只是基本的obj.key=val语法(确切地说:obj[key]=val)
const obj={
答:"是",,
b:“是”,
c:“海洋”
}
const userSpecified=“a”;
console.log(obj[userSpecified]);//预期:是
不可能动态获取局部变量的值(除了eval
)
但您可以使用对象存储数据(而不是局部变量的名称),并使用动态键访问该数据
我想这就是你想要的:
const data = {
a: "1",
b: "2",
c: "3",
}
// Take the name of an object property and return its corresponding value.
function getValue(userSpecified) {
return data[userSpecified]
}
console.log(getValue("a")) // 1
console.log(getValue("b")) // 2
console.log(getValue(someFormField.value))
当
obj
是{“userSpecified”:“a”}
时,它为什么要输出aye
?不确定这是否是您想要做的,但请尝试:让userSpecified={a}当然,它应该输出两个“是”作为对象。好问题,对不起,我应该解释一下。用户将在编辑字段中输入一个值,因此我尝试使用名为“UserSpecified”的变量来传达该值,但显然我做得不好。我将编辑我的问题以澄清这一点。这仍然没有多大意义。。。为什么obj
window[userSpecified]===“是”//if userSpecified==“a”
,因为@DBTake3仍然希望该值是局部变量的名称。谢谢!这帮了汉克斯,这帮了忙。我很高兴我能帮上忙:)