【发布时间】:2013-04-08 20:34:36
【问题描述】:
我主要使用 javascript、Jquery、knout 等工作
eval() 吸引我的地方是
var a = 5;
var b = 10;
eval("a+b");
//Gives me output 15
注意:我在 a 和 b 的值动态变化的情况下工作
在我的工作中,我处理了很多来自 json、knout 等的动态对象。所以 eval 解决了我的大部分问题。 但是当我阅读时,我发现 eval() 有很多问题,比如放慢速度等。
当我必须将作为字符串获取的方程评估为作为对象的方程时,我进行了很多搜索,但没有找到 eval() 的任何替代品。
任何人都可以建议一个插件或函数替代 eval() 记住我上面给出的例子
问题:
我正在使用剔除映射从 Json 数据创建一个表。这样无论 json 的格式是什么,表格都会生成。我还使用敲除计算来计算一些字段。 现在我使用硬编码
self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })
self.salaryEqn(salEqnTxt);
我想动态执行这些方程。我可以将其动态创建为字符串,但评估它们是我面临的问题。
我想要解决方案
有没有办法在不使用 eval 的情况下计算存储在 JavaScript 中的字符串中的公式?
像一个公式
"self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })"
【问题讨论】:
-
它不适用于您的示例,但如果您需要的是
to evaluate equation obtaining as string into equation as object.,那么您可以使用JSON.parse -
一般来说,您应该尽可能避免使用 eval()。检查以下链接以了解您在使用 eval() 时遇到的问题。 ajaxmin.codeplex.com/wikipage?title=Problems%20with%20Evals 更新:检查此stackoverflow 答案以替代 javascript 中的 eval。
-
a + b为您提供15,而无需将其表示为字符串然后对其进行求值。 -
@ClaudioRedi 也会给出与 eval("a+b") 相同的结果
-
@Quentin 我处理 a 和 b 的值动态变化的情况
标签: javascript jquery jquery-plugins eval