相关疑难解决方法(0)

替代eval()javascript

我主要使用javascript,Jquery,knockout等

吸引eval()给我的是

var a = 5;
var b = 10;
eval("a+b");
//Gives me output 15
Run Code Online (Sandbox Code Playgroud)

注意:我工作的情况是值ab动态变化

在我的工作中,我正在处理来自json,knockout等的许多动态对象.所以eval解决了我的大部分问题.但正如我读到的那样,我发现eval()有很多问题,如减速等.

我搜索了很多并且没有找到任何替代eval()的时候我必须将方程式作为字符串获取为方程式作为对象.

任何人都可以建议一个插件或功能替代eval()记住我上面给出的例子

问题:

我正在使用挖空映射从Json数据创建一个表.因此,生成json格式的表格.我还使用knockout计算了一些场.现在我使用硬编码

self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })
self.salaryEqn(salEqnTxt); 
Run Code Online (Sandbox Code Playgroud)

我想动态执行这些方程式.我可以创建它作为字符串动态,但评估它们是我面临的问题.

我想要解决方案

有没有办法在不使用eval的情况下计算存储在JavaScript中的字符串中的公式?

像一个公式

 "self.Salary = ko.computed(function(){ return self.salaryEqn() && eval(self.salaryEqn()).toFixed(2); })"
Run Code Online (Sandbox Code Playgroud)

javascript jquery eval jquery-plugins

25
推荐指数
2
解决办法
6万
查看次数

在 Javascript 中计算方程,不使用 eval()

我在网页 (150+) 中有一堆字段,需要在它们上运行方程式才能产生结果。

我目前存储这样的方程:

<input name="F7" type="text" class="numeric" data-formula="([C7]-[D7])/[E7]" readonly />
Run Code Online (Sandbox Code Playgroud)

当输入模糊时,我使用 jQuery 选择器遍历所有具有data-formula属性的输入,采用公式,并使用正则表达式替换指针([C7]等式中的 )替换为其适当的值。

之后,我eval()将方程得到一个结果,并将其放入正确的输入中。这很好用,但速度慢,导致网页挂起几秒钟,如果每次输入模糊时都会发生这种情况,这很糟糕。

有没有一种方法可以在不使用的情况下评估一个方程,例如“(1-2)/4” eval()?这些方程也可能有函数,例如平方根(这eval()很好,因为我可以直接Math.sqrt()输入公式),并且数字可能是小数。

注意:这个应用程序必须在 IE7 和 8 上运行,所以我不相信我可以使用 Webworkers 或类似的东西。我还考虑过仅在点击“保存”按钮后运行此代码,但如果可能,我更希望用户界面实时更新

javascript eval

6
推荐指数
1
解决办法
5955
查看次数

如何在没有eval的情况下在javascript中编写计算器

所以,我搜索了高低,我找不到答案.我已经尝试了大约三次,并通过基本上将输入作为字符串存储在数组中,解析数字,然后打开运算符,以便评估整数,得到一个基本的一个,但我有一个找出链接逻辑真的很难.有没有人有什么建议?甚至可能只是伪造的代码?我真的不想使用eval.非常感谢

javascript logic eval calculator

6
推荐指数
1
解决办法
1万
查看次数

Javascript eval函数返回八进制值

当我尝试"eval"函数作为eval("020*05 + 05")时,它将返回85而不是105.有人可以解释为什么eval函数的行为如下吗?还建议任何克服这个问题.

javascript

5
推荐指数
1
解决办法
1361
查看次数

如何在JS中替换字符串公式中的整数

我想在我的字符串公式中替换整数来评估表达式.

我有一个像这样的数组

var value_array=[
{value: "11", order: "1"},
{value: "4", order: "2"},
{value: "31", order: "3"},
{value: "41", order: "4"},
{value: "51", order: "5"},
{value: "61", order: "6"},
{value: "71", order: "7"},
{value: "80", order: "8"},
{value: "91", order: "9"},
{value: "101", order: "10"},
{value: "111", order: "11"},
{value: "128", order: "12"},
{value: "131", order: "13"},
{value: "145", order: "14"}
];
Run Code Online (Sandbox Code Playgroud)

我的公式是 ((1+14)*5+12*3-7*8/2+4)

我想用相应的订单值替换整数.

我应该得到((11+145)*51+128*31-71*80/4+41),然后我会评估由10545产生的字符串.

谢谢你的帮助

javascript

2
推荐指数
1
解决办法
289
查看次数

标签 统计

javascript ×5

eval ×3

calculator ×1

jquery ×1

jquery-plugins ×1

logic ×1