JavaScript中eval的预期目的是什么?

raj*_*kvk 6 javascript

可能重复:
JavaScript的eval()何时不是邪恶的?

我知道,一般使用eval()是不好的做法.

但出于什么目的它存在于那里?

什么是正确的目的eval()

在什么情况下最好使用eval()

rah*_*hul 8

EVAL

评估一串JavaScript代码,而不引用特定对象.

如果将算术表达式构造为字符串,则可以使用eval在以后对其进行求值.例如,假设您有一个变量x.您可以通过将表达式的字符串值(例如"3*x + 2")分配给变量,然后在脚本中稍后调用eval来推迟对涉及x的表达式的求值.

使用eval时要小心

eval()是一个危险的函数,它使用调用者的特权执行它传递的代码.如果您使用可能受恶意方影响的字符串运行eval(),您最终可能会使用您的网页/扩展程序的权限在用户的计算机上运行恶意代码.

  • 我不喜欢像"不要使用eval!"这样的绝对.eval是一种工具.当您需要该特定工具时使用它,不要在任何其他时间使用它.诀窍是学习"需要"的正确定义. (3认同)

Tom*_*Tom 8

eval()提供对JavaScript编译器的访问,这最终允许代码在以后执行.传递给函数的参数将传递给JavaScript编译器,然后执行代码.

开发人员争论安全性eval().这不太安全的,但如果你绝对相信你的投入将其传递之前,消毒,那么它不应该是一个问题.

此外,结果eval()通常较慢,因为代码尚未编译或缓存.使用该功能显然会受到性能影响.

调试eval()由于使用而产生的代码也很困难,因为关于最终执行的代码几乎没有上下文信息(想想行号).

在Web开发方面,目前最流行的用途之一eval()通常在Ajax应用程序的上下文中反序列化JSON字符串; 然而,这并不是说没有太多其他用途.