首页 > 很多人说 JavaScript eval 方法不好,为什么不取消

很多人说 JavaScript eval 方法不好,为什么不取消

经常见建议避免使用 eval 方法,但是它的一直存在是不是有无法替代的作用呢?


有时候缺点就是优点


现实世界的重要特征之一就是无法做到不好的东西说取消就能取消


eval在性能上的影响不好说,但是很容易成为攻击的入口


如果没有了 eval() 和new Function(...),javascript 还能叫脚本语言吗?本来脚本语言最强大的特性就是数据和代码能互相转换,结果你想给去了……

大多数时候不用,是因为不好驾驭,不是因为没用啊。


在 stackoverflow 看到兩句話:

eval() is evil. Even if targeting a browser where eval(uneval(o)); works I would definitely avoid that technique.

另一句是回復:

Eval is not evil. Using eval poorly is. If you are afraid of its side effects you are using it wrong. The side effects you fear are the reasons to use it. Did any one by the way actually answer your question?


不好不意味着必须取消,举个例子,某些语言中的goto语法,也一直都是不被建议使用的东西,但却一直存在。
不建议使用是因为这些东西的使用容易带来风险,但当你对它足够熟悉足够谨慎的话它就能够体现它得天独厚的优势了。


好像是不推薦,但實際的應用測試卻讓人大跌眼鏡,給個傳送們: http://blog.zhaojie.me/2012/08/js-code-from-eval-benchmark.html

【热门文章】
【热门文章】