我主要使用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) 我有一些看起来像这样的代码:
function StrippedExample(i1, i2, i3, i4, i5, i6, i7, i8) {
this.i = [];
for (var i=1,j=0 ;i<9;i++) {
var k = eval("i"+i);
if (k > 0) {
this.i[j++] = k;
}
}
}
Run Code Online (Sandbox Code Playgroud)
FireBug profiler声称第二个最长的函数是eval(),占运行时间的近6%.
每个人都说eval是EVIL(就像糟糕的那样)而且很慢(正如我所发现的那样),但我真的无法做任何事情 - 服务器只是将数据从数据库中拉出来并推送到浏览器.
我有什么替代品?我可以像在服务器上做的那样做,但这只会将负担转移到链条上方.我无法更改数据库布局,因为所有内容都挂钩到这8个变量,这是一项艰巨的任务.
我有一个接受JS插件的Web应用程序.也就是说,其他人写的用户希望加载到我的应用程序中的JavaScript代码.
目前我正在使用eval()来评估他们的JS代码到运行时,但我知道这不安全.这样做有比eval()更好的方法吗?
为了清楚起见,用户正在指向一个干文本文件(URL),文件中的JS需要以某种方式生效.
我知道动态导入JS脚本的方法只有两种:
<script>标签添加到DOM问题的目的是弄清楚一个人是否比另一个人更安全,或者是否有比上述两个选项更好的方法.