我主要使用javascript、Jquery、knockout等技术进行工作。
吸引我使用eval()的原因是
var a = 5;
var b = 10;
eval("a+b");
//Gives me output 15
注意:我处理的案例中,a
和 b
的值会动态变化。
在我的工作中,我需要处理来自Json、Knockout等的大量动态对象。因此,eval函数可以解决我的大部分问题。 但是,我发现eval()存在许多问题,例如减速等。
我进行了许多搜索,没有找到任何替代eval()的方法,当我需要将以字符串形式获取的方程式求值为对象时。
有人能推荐一个插件或函数,替代eval(),并考虑到我上面给出的例子吗?
问题:
我使用knockout映射从Json数据创建表格,以便无论Json的格式如何,都可以生成表格。我还使用knockout computed计算一些字段。 目前,我使用硬编码。
self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })
self.salaryEqn(salEqnTxt);
我想动态地执行这些方程。我可以将它们动态创建为字符串,但评估它们是我面临的问题。
我想要解决方案:
是否有一种方法可以在JavaScript中计算存储在字符串中的公式而不使用eval?
就像一个公式
"self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })"
a + b
可以直接得到15
,而不需要将其表示为字符串然后进行 eval。 - Quentin