javascript - 在没有eval的情况下评估javascript中的字符串

标签 javascript eval

我有一些变量

var a = true;
var b = false;
var c = true;

和一个数组

var array = ['a', 'b', 'c'];

如何评估元素对应的真值?

我知道我可以使用 eval(),但由于它被认为是有害的,还有其他选择吗?

在某些情况下,我宁愿将“真相”分配为

var truth = {'a': true, 'b': false, 'c': true};

看起来,eval() 没有采用其他选项(例如 eval('a+b', {a: 1, b: 3}) = 4)

最佳答案

虽然这不能回答您的问题,但它应该可以完成您需要做的事情。

与其创建这些变量,不如将它们设置为本地对象的属性——然后使用它们。

var obj = {
   a: true,
   b: false,
   c: true
};

var array = ['a', 'b', 'c'];

array.forEach(function(val) {
  console.log("Value ", val, "is ", obj[val]);
});

由于事物的命名方式,您还可以访问

obj.a = false;

obj["b"] = true;

关于javascript - 在没有eval的情况下评估javascript中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39423090/

相关文章:

javascript - jquery ui日期范围两个日期之间15天

javascript - 从 Javascript 重新加载 Chrome 中的 flash 插件

bash - 如何将 eval 的结果分配给 bash 脚本中的变量?

ruby - 替代 eval()

perl - CPAN 模块中的 `eval` ing 没有本地化 $@ 是一个错误吗?

javascript - 从字符串中获取变量

javascript - 如何创建 API 或指向我的 SVG 的链接以便其他网站可以显示它?

javascript - Node.js 无法将字符串传递到 res.send() 中;不明确的

javascript - 开 Jest + 火力地堡 : TypeError: Cannot read property 'defineProperties' of undefined

javascript - 为什么 eval() 存在?