不推荐使用eval的缘由有不少,
一、eval 太神秘了,以致于不少人用错。因此不推荐使用。
好比这段代码你应该见过:
然而实际上,咱们能够这样写:

这并非eval 很差而是由于容易被用错。
eval只是一个普通的函数,只不过他有一个快速通道通向编译器,能够将string变成可执行的代码。有相似功能的还有Function , setInterval 和 setTimeout。
二、 eval不容易调试。用chromeDev等调试工具没法打断点调试,因此麻烦的东西也是不推荐使用的…
三、说到性能问题,在旧的浏览器中若是你使用了eval,性能会降低10倍。在现代浏览器中有两种编译模式:fast path和slow path。fast path是编译那些稳定和可预测(stable and predictable)的代码。而明显的,eval不可预测,因此将会使用slow path ,因此会慢。
还有一个是,在使用相似于Closure Compiler等压缩(混淆)代码时,使用eval会报错。
(又慢又报错,我还推荐吗?)
四、关于安全性,咱们常常听到eval是魔鬼,他会引发XSS攻击,实际上,若是咱们对信息源有足够的把握时,eval并不会引发很大的安全问题。并且不光是eval,其余方式也可能引发安全问题。好比:
莫名其妙给你注入一个<script src="">标签,或者一段来历不明的JSON-P请求,再或者就是Ajax请求中的eval代码…