gpt4 book ai didi

javascript - 通过文字变量名访问变量(eval 和 likes 除外)

转载 作者:行者123 更新时间:2023-11-30 17:11:50 24 4
gpt4 key购买 nike

假设我有一个变量保存另一个变量的名称

var foo='varname'

我想获取varname的值

如果 varname 是全局的,我可以做 window[foo],但是 varname 不是全局的。

如果这是一个个人项目,我会不回头地执行 eval(foo),但在专业环境中,eval 总是不受欢迎,所以我试图首先收集所有可用选项,看看是否可以避免。

我能想到的唯一选择是 Function('return '+ foo)() 但这感觉非常像 eval

我认为答案是否定的,但是有没有什么方法可以使用方形表示法或类似的“安全”方法来引用不是对象属性的变量?

谢谢

-- 更多上下文--

在主函数中设置变量。要评估的条件来自 json 文件。总的来说,在获得 json 之后,会评估条件。如果满足条件,就会发生一些事情。条件采用 json 格式,如 {cond1:{varname:'somevalue'}}。我想测试 varname==='somevalue'

最佳答案

I think the answer is no, but is there any way to refer to a variable that is not global using square notation or similar "safe" methods?

你是对的:答案是否定的。相反,使用对象和属性:

var vars = {
foo: "bar"
};
var varname = "foo";
snippet.log(vars[varname]); // "bar"
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

如果你想加入一些通常不受欢迎的else,你可以将它与with语句结合起来得到看起来的东西像变量,但实际上是属性:

var vars = {
foo: "bar",
baz: "buz"
// ...and so on
};
var varname = "foo";
with (vars) {
snippet.log(vars[varname]); // "bar"
// Looks like a variable:
foo = "updated";
snippet.log(vars[varname]); // "updated"
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

我不是推荐它,只是想给你一些选择。 :-)

关于javascript - 通过文字变量名访问变量(eval 和 likes 除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com