相关疑难解决方法(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有哪些替代方案?

我有一些看起来像这样的代码:

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个变量,这是一项艰巨的任务.

javascript eval

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

将插件加载到Web应用程序的安全/可靠方式

我有一个接受JS插件的Web应用程序.也就是说,其他人写的用户希望加载到我的应用程序中的JavaScript代码.

目前我正在使用eval()来评估他们的JS代码到运行时,但我知道这不安全.这样做有比eval()更好的方法吗?

为了清楚起见,用户正在指向一个干文本文件(URL),文件中的JS需要以某种方式生效.

我知道动态导入JS脚本的方法只有两种:

  1. 使用AJAX,获取JS代码,然后在其上运行eval().
  2. 动态地将<script>标签添加到DOM

问题的目的是弄清楚一个人是否比另一个人更安全,或者是否有比上述两个选项更好的方法.

javascript browser google-chrome-extension web

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