Okk*_*kky 25 javascript jquery eval jquery-plugins
我主要使用javascript,Jquery,knockout等
吸引eval()给我的是
var a = 5;
var b = 10;
eval("a+b");
//Gives me output 15
Run Code Online (Sandbox Code Playgroud)
注意:我工作的情况是值a和b动态变化
在我的工作中,我正在处理来自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)
Spu*_*ley 17
在这方面,Javascript是一种非常灵活的语言.有非常非常少数情况下eval()是正确的答案,任何给定的问题,那肯定是没有必要在这里.
如果您的a和b变量是对象的一部分,您可以使用字符串下标访问它们:
即myobj.a也可以作为参考myobj['a'].
从那里,您可以使用变量作为下标,因此您可以myobj动态引用任何元素- 即:
var myobj = {a : 5, b : 10};
var dynamicProperty1 = 'a';
var dynamicProperty2 = 'b';
//gives 15.
alert( myobj[dynamicProperty1] + myobj[dynamicProperty2] );
Run Code Online (Sandbox Code Playgroud)
不需要eval().您可以根据需要构建dynamicProperty字符串,因此几乎具有无限的灵活性.
如果你a和b变量是全局变量,全局JS在浏览器实际上是对儿童window的对象,所以你仍然可以使用全局变量,即使使用这种技术.
即您的全局变量a也可以通过window.a或访问window['a'],后一个选项允许您执行上述相同的dynamicProperty技巧.
希望有所帮助.
小智 5
你的意思是你想计算一个直到你收到它才知道的方程吗?
如果是这样,请参阅在 javascript 中计算字符串值,而不是使用 eval。
eval 有时可以使用,但前提是方程字符串来自受信任的来源,并且您需要诸如评估动态方程之类的东西。
| 归档时间: |
|
| 查看次数: |
58188 次 |
| 最近记录: |