我在想,
除了Eval
再次激活解释器,造成开销,
唯一可能不好的情况(除了我刚刚写的)是向服务器JS
发送数据(即eval'd
)时。
我没有看到任何其他场景,如果用户想玩 js,他只会在他的浏览器边界内玩(除非 JS 正在与服务器交互)。
我对吗?
我很乐意更正。
我在想,
除了Eval
再次激活解释器,造成开销,
唯一可能不好的情况(除了我刚刚写的)是向服务器JS
发送数据(即eval'd
)时。
我没有看到任何其他场景,如果用户想玩 js,他只会在他的浏览器边界内玩(除非 JS 正在与服务器交互)。
我对吗?
我很乐意更正。
严格来说,使用 .com 在物理上实际上并没有什么危害eval
,因为它所做的只是浏览器控制台已经可以做的事情。
存在注入的潜在危险,但这与将任何用户提供的输入放入<script>
标签中的风险相同,而不是eval
.
避免的主要原因eval
是因为它必须解释一个字符串。现在,公平地说,仅仅运行一个 JavaScript 文件基本上与在整个文件上调用一个很大eval
的文件(广义地说)是一样的,因为 JavaScript 是被解释的(或最多在运行时编译)。因此,eval
只在用户单击按钮时才运行它的稀疏使用是可以的。eval
仅当您最终频繁运行(例如循环运行)时,才会出现明显的效果。这就是为什么人们总是会告诉你传递一个函数setTimeout
而不是一个字符串,例如。
也就是说,总是有替代使用eval
. 它可能需要重写旧代码的一部分,但它总是可以避免的。