有人声称 eval 是邪恶的。
任何常规 HTML 页面可能如下所示:
<script src="some-trendy-js-library.js"></script>
</body>
</html>
也就是说,假设执行此操作的人知道他的工作并将 javascript 留在页面末尾加载。
在这里,我们基本上是将脚本文件加载到 Web 浏览器中。有些人更深入并使用它作为与 3rd 方服务器进行通信的一种方式......
<script src="//foo.com/bar.js"></script>
此时,无论出于何种原因,在运行时有条件地实际加载这些脚本已被发现很重要。
我的观点是什么?虽然机制不同,但我们正在做同样的事情......将一段纯文本作为代码执行 - 也就是eval()
.
说清楚了,问题来了……
给定某些条件,例如 AJAX 请求,或者(更有趣的是)websocket 连接,执行服务器响应的最佳方式是什么?
这里有一对让你思考......
eval()
服务器的输出。(那边那个人是不是晕倒了?)- 运行服务器返回的命名函数:
var resp = sock.msg; myObj[resp]();
- 构建我自己的解析器来弄清楚服务器试图告诉我什么而不直接弄乱javascript。