评估一串JavaScript代码,而不引用特定对象.
如果将算术表达式构造为字符串,则可以使用eval在以后对其进行求值.例如,假设您有一个变量x.您可以通过将表达式的字符串值(例如"3*x + 2")分配给变量,然后在脚本中稍后调用eval来推迟对涉及x的表达式的求值.
eval()是一个危险的函数,它使用调用者的特权执行它传递的代码.如果您使用可能受恶意方影响的字符串运行eval(),您最终可能会使用您的网页/扩展程序的权限在用户的计算机上运行恶意代码.
eval()提供对JavaScript编译器的访问,这最终允许代码在以后执行.传递给函数的参数将传递给JavaScript编译器,然后执行代码.
开发人员争论安全性eval().这是不太安全的,但如果你绝对相信你的投入将其传递之前,消毒,那么它不应该是一个问题.
此外,结果eval()通常较慢,因为代码尚未编译或缓存.使用该功能显然会受到性能影响.
调试eval()由于使用而产生的代码也很困难,因为关于最终执行的代码几乎没有上下文信息(想想行号).
在Web开发方面,目前最流行的用途之一eval()是通常在Ajax应用程序的上下文中反序列化JSON字符串; 然而,这并不是说没有太多其他用途.