相关疑难解决方法(0)

什么时候JavaScript的eval()不是邪恶的?

我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能).解析了公式后,我可以将其转换为JavaScript并eval()在其上运行以产生结果.

但是,eval()如果我可以避免它,我总是回避使用,因为它是邪恶的(而且,无论是对还是错,我一直认为它在JavaScript中更加邪恶,因为要评估的代码可能会被用户改变).

那么,什么时候可以使用它?

javascript coding-style eval

253
推荐指数
9
解决办法
8万
查看次数

为什么eval邪恶呢?

我知道Lisp和Scheme程序员通常会说eval除非必要,否则应该避免.我已经看到了几种编程语言的相同建议,但我还没有看到一个反对使用的明确论据列表eval.我在哪里可以找到使用中潜在问题的说明eval

例如,我知道GOTO程序编程中的问题(使程序难以理解且难以维护,难以找到安全问题等),但我从未见过反对的论点eval.

有趣的GOTO是,相反的论点应该对延续有效,但我看到Schemers,例如,不会说延续是"邪恶的" - 你在使用时应该小心.他们更倾向于使用代码而eval不是代码使用continuation(据我所知 - 我可能是错的).

lisp scheme eval clojure common-lisp

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

为什么eval()存在?

许多程序员说使用该功能是一种不好的做法eval():

什么时候JavaScript的eval()不是邪恶的?

我想花一点时间来解决你的问题的前提 - eval()是"邪恶的"......

这个eval()有危险吗?

Buggy evaled代码可能违反安全属性,就像有缺陷的源代码一样容易...

为什么不用eval()JSON?

您的安全性可能有多种方式可能会受到影响......

是否有充分的理由使用eval()?

是的 - 当没有其他方法以合理的清晰度完成给定任务时...这消除了99%使用eval的情况......

为什么eval中的eval不安全?

eval的危险只会在你为一个用户bob写的脚本服务bob的浏览器eval时提供它丑陋的头部...


那为什么它首先存在?

javascript eval

32
推荐指数
4
解决办法
1404
查看次数

是否有充分的理由使用eval()?

在我看来,eval()同样不屑于goto.而且eval,我指的是一个用于执行字符串作为代码的函数,如PHP,Python,JavaScript等所示.是否存在使用eval()合理的情况(perl除外)?如果没有,为什么这么多语言实现它呢?

eval

24
推荐指数
3
解决办法
4012
查看次数

将变量传递给setIntervall函数

我使用以下代码每5秒调用一次jQuery插件

    var now = new Date();

    setInterval('$("#id").myplugin(now)', 1000);
Run Code Online (Sandbox Code Playgroud)

到目前为止,插件看起来像这样:

    (function( $ ){
    $.fn.myplugin = function(now) {
        return this.each(function() {
            alert(now.getTime());
        });
    }
   })( jQuery );
Run Code Online (Sandbox Code Playgroud)

但是我得到错误:

未捕获的ReferenceError:现在未定义
plugins.js:30未捕获的TypeError:无法调用未定义的方法'getTime'

所以它看起来好像现在的时间对象doenst被传递给插件函数,甚至没有在setInterval方法中定义.我可以调用var now = new Date(); 每次都在插件函数中...但我想知道,为什么它会像这样工作以及如何使它工作;).多谢.

javascript setinterval

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