如何将字符串作为代码执行(使用 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/