javascript - eval() 带有来自范围内对象的变量

标签 javascript eval

如何将字符串作为代码执行(使用 eval())并为其赋予一些变量?例如,我有一个名为 vars 的对象,并希望代码可以访问其每个属性,而无需明确指定对象名称。像这样的:

function evalWithVariables(func, vars) {
 //some magic here
 return eval(func);
}

function test() {
 var retval = evalWithVariables("a>5", {"a":7});
 console.log(retval);
}

哦,代码是受信任的,它来自与脚本相同的服务器,它不是用户生成的,我很确定 eval 是正确的工具(我知道 eval 通常是邪恶的)。

编辑: 对我来说最重要的是传递给 eval() 的代码看起来不错,很短并且不必包含辅助变量名字左右。

最佳答案

发现只使用 with 是可能的:

eval("with (vars) {var result = (" + func + ")}");

关于javascript - eval() 带有来自范围内对象的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359639/

相关文章:

javascript - eval 不适用于变量

python -\r\n 与 python eval 函数中的\n

javascript - 在 Google apps 脚本中获取 json 数组中的键->值

javascript - 在 JavaScript 代码中使用 PHP 变量

Javascript 类对象字符串到对象

javascript - 具有返回值的全局评估?

c# - 如何使用 RavenDB 中的 eval 功能将项目添加到数组?

javascript - 用Javascript导入图像到jsp

javascript - Angular ng-repeat 传递项目以与父数据一起运行?

javascript - typescript 索引错误 : looping through keys of typed object