书上说eval()函数提供了访问js编译器的机会是什么意思?为什么会产生糟糕的代码?
数据和代码混在一起,就容易出漏洞,就像你把模板和控制器混在一起,就容易被xss。
性能和安全问题~~
http://.com/q/1010000002973097
http://.com/q/1010000002426734
这里不是很多吗?
好像大部分语言都有eval这个函数,且有经验的开发人员都不建议使用。首要一点是,不可控。不可控会带来两点问题:1是不安全,这个大家都知道。2是职责/功能不可控,违背设计原则。至于性能问题,我研究得浅,也只能参考楼上各位的回答了
问题不仅是快或慢
一是安全问题, 然后eval在一些情况下会造成内存泄漏
会运行编译器,影响性能。
弱化安全性,因为被授予太多权利
在JavaScript秘密花园中,专门提到了的
为什么不要使用 eval
在其实可以看出凡是使用eval的地方,我们都能用其他方法代替,而且eval有比较严重的安全问题,它会执行任何传给它的方法
eval 的用法比较奇葩,用起来很麻烦,说不定就遇到坑了。
然而实际上,我们不经意间最常用的就是 eval
比如 script 标签, settimeout, setinterval,new Function, es6 的 import 等等。