邪恶的 eval
eval()
函数用于对字符串形式的 JavaScript 代码进行求值。
代码求值的最常见的解决方案即使用 eval()
函数。由 eval()
执行的代码能够访问闭包和全局作用域,这会导致被称为代码注入 code injection 的安全隐患,正因此让 eval()
成为 JavaScript 最臭名昭著的功能之一。
虽然让人不爽,但是在某些情况下 eval()
是非常有用的。大多数的现代框架需要它的功能,但是因为上面提到的问题而不敢使用。结果,出现了许多在沙箱而非全局作用域中的字符串求值的替代方案。沙箱防止代码访问安全数据。一般情况下,它是一个简单的对象,这个对象会为求值代码替换掉全局的对象。