当前位置: 首页 > 面试题库 >

为什么使用JavaScript eval函数不是一个好主意?

陶星辰
2023-03-14
问题内容

eval函数是一种动态生成代码的强大而简便的方法,那么有哪些警告?


问题答案:
  1. 错误使用 eval会 打开代码以进行注入攻击

  2. 调试 可能会更具挑战性(没有行号等)

  3. 评估的代码执行速度较慢(没有机会编译/缓存评估的代码)

编辑:正如@Jeff
Walden在评论中指出的那样,今天#3的真实性要低于2008年。但是,尽管可能会缓存一些已编译脚本,但这只会限于未经修改就重复的脚本。更有可能的情况是您正在评估每次都经过略微修改且因此无法缓存的脚本。我们只说某些评估代码的执行速度较慢。



 类似资料:
  • 问题内容: 是仅在继承还是大多数情况下才是正确的? 问题答案: 这是真的。 因为二传手总是方法。如果您的课程不是,那么就会出现外来方法调用的问题。这不是线程安全的,即称为转义引用。因此,从构造函数中,如果要调用方法,则应为或。其他对象将不会发生,这会在实际系统中导致许多错误。 除了上述内容之外,我们永远不要从中调用method,因为 如果该类旨在继承,则Constructor不得直接或间接调用可重

  • 问题内容: 我正在使用MongoDB的node.js应用程序上工作,我从docs中读取了此内容: db.collection 获取特定的集合(包含实际的集合信息)。如果应用程序不使用严格模式,则可以通过以下方式在没有回调的情况下使用它。 首先,文档指的是什么“严格模式”? 另外,以这种方式获取系列是不明智的做法吗?没有回调,尝试选择正确的集合时,我是否不会失去捕获潜在连接错误的能力? 问题答案:

  • 问题内容: 文档在这里。_ 文档提到字典不应该改变,不确定它是什么意思,但是将适用于数据不会改变的实验室报告,例如在测量中? 问题答案: 修改是一个坏主意,因为文档(您链接到该文档)明确指出不要: 注意: 此字典的内容不得修改;更改可能不会影响解释器使用的局部变量和自由变量的值。 您不需要任何其他理由。 如果您以不修改任何变量的方式使用它,那么您会没事的,但是我会质疑设计,看看是否有更好的方法来做

  • 问题内容: 为什么Catch(Exception)一个坏主意? 问题答案: 因为当你捕获异常时,你应该正确处理它。而且,你不能期望在代码中处理所有类型的异常。同样,当你捕获所有异常时,你可能会得到一个无法处理的异常,并阻止堆栈中位于较高位置的代码正确处理它。 一般原则是捕获可能的最特定类型。

  • 有人能给我解释一下为什么Redux有两个函数mapStateToProps和mapDispatchToProps都将道具添加到容器中吗? 定义: MapStateTops是一个帮助组件获得更新状态(由其他组件更新)的实用程序 mapDispatchToProps是一个实用程序,它将帮助您的组件触发操作事件(调度操作可能导致应用程序状态的更改) 为什么Redux团队选择将其分为两个映射函数——也就是

  • 问题内容: 我一直认为函数式编程可以在Python中完成。因此,令我感到惊讶的是,Python在这个问题上没有得到太多提及,而当它被提及时,通常不是很积极。但是,没有给出很多原因(缺少模式匹配和代数数据类型)。所以我的问题是:为什么Python对于函数式编程不是很好?除了缺少模式匹配和代数数据类型之外,还有其他原因吗?还是这些概念对函数式编程如此重要,以致于不支持它们的语言只能被归类为一流的函数式