gpt4 book ai didi

javascript - 是否可以提供自定义范围添加删除变量到 eval 函数?

转载 作者:行者123 更新时间:2023-12-03 10:17:01 25 4
gpt4 key购买 nike

我正在尝试使用 eval() 来评估带有变量和函数的数学字符串

例如:algo =“1+len+customfunction(6)”

所以我有 len 的数据和 customFunction 的函数。

它们显然是在不同的范围内声明的。

我尝试过类似的东西

process = function(vars, algo) {
return (function() {
algo = algo.toLowerCase();
return eval(algo);
}).call(vars);
};

我需要提供评估所需的函数和变量。项目处于不同的范围内,我该怎么做?

现在我有点迷失和困惑,这可能吗?我认为使用 eval('var'+vName+'='+value) 对于变量来说没问题,但不适合函数。

编辑:顺便说一句 eval 可以替换为 (new Function(algo))() http://moduscreate.com/javascript-performance-tips-tricks/

最佳答案

我会将所需的数据移动到一个对象,该对象包含所有必需的项目。可以使用任何给定的字符串进行访问。此解决方案不需要 eval()

var data = {
customfunction: function (x) {
return Math.PI * x * x;
},
len: 5
};
var variable = 'len';
if (data[variable]) {
// do something
;
}
var fn = 'customFunction';
function evaluate(vars, algo) {
if (data[algo.toLowerCase()]) { //
return data[algo.toLowerCase()].call(vars);
} else {
// fallback
}
}
var process = evaluate(vars, algo);

关于javascript - 是否可以提供自定义范围添加删除变量到 eval 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29827121/

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