猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
为什么使用JavaScript eval函数是一个坏主意?
为什么使用JavaScript eval函数是一个坏主意?
eval函数是一种动态生成代码的强大而简单的方法,那么有什么警告呢?
一只名叫tom的猫
浏览 535
回答 4
4回答
有只小跳蛙
eval的不正确使用会打开您的注入攻击代码调试可能更具挑战性(没有行号等)eval'd代码执行速度较慢(无法编译/缓存eval'd代码)
0
0
0
萧十郎
评估并不总是邪恶的。有时候它非常合适。然而,eval目前和历史上大量过度使用,他们不知道自己在做什么。不幸的是,这包括编写JavaScript教程的人,在某些情况下,这确实会带来安全后果 - 或者更常见的是简单的错误。因此,我们越多可以在eval上抛出问号,就越好。每当你使用eval时,你需要理智地检查你正在做什么,因为你可能会做得更好,更安全,更清洁。举一个非常典型的例子,设置一个id存储在变量'potato'中的元素的颜色:eval('document.' + potato + '.style.color = "red"');如果上面那种代码的作者对JavaScript对象的工作原理有了线索,他们就会意识到可以使用方括号而不是文字点名,从而避免了对eval的需求:document[potato].style.color = 'red';...这更容易阅读,也不那么潜在的错误。(但是,有人/他/他/他们知道他们在做什么会说:document.getElementById(potato).style.color = 'red';这比直接从文档对象访问DOM元素的狡猾的旧技巧更可靠。)
0
0
0
MYYA
我相信这是因为它可以从字符串中执行任何JavaScript函数。使用它可以让人们更容易将恶意代码注入应用程序。
0
0
0
摇曳的蔷薇
我想到两点:安全性(但只要您自己生成要评估的字符串,这可能不是问题)性能:直到要执行的代码未知,它无法进行优化。(关于javascript和性能,肯定是Steve Yegge的演讲)
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续