【发布时间】:2011-08-24 20:04:32
【问题描述】:
如果浏览器在网页上执行 JavaScript 并且遇到无效的 JavaScript (例如 somerandomthingy;)JavaScript 的执行是否在该点停止,或者异步操作是否继续。 JavaScript 事件是否仍然有效(例如 onclick)。
【问题讨论】:
标签: javascript
如果浏览器在网页上执行 JavaScript 并且遇到无效的 JavaScript (例如 somerandomthingy;)JavaScript 的执行是否在该点停止,或者异步操作是否继续。 JavaScript 事件是否仍然有效(例如 onclick)。
【问题讨论】:
标签: javascript
是的,除了异步的。 http://jsfiddle.net/pimvdb/R4dfJ/3/
DIY:
var a = 1, b, c;
setTimeout(function() {
b = 2;
console.log('Running', a, b, c);
}, 1000);
somerandomthingy;
c = 3;
Uncaught ReferenceError: somerandomthingy is not defined
运行 1 2 未定义
所以:
a 和 b 已设置c 尚未设置至于“onclick 是否仍然有效” - 好吧,如果处理程序设置在运行的代码中(即在错误之前),它可以;如果将其放在错误代码之后,它将不会绑定处理程序,因此事件将不起作用。
【讨论】:
jquery.js、jquery.ui.js、jquery.ui.foo.js 这样的脚本时,事情会成功运行,每个后续文件都依赖于前一个文件。
没有代码在错误之后执行。
function inAFunction(){
alert("one");
x = y;
alert("two");
}
inAFunction();
你会看到“一”而不是“二”
alert("one");
x = y;
alert("two");
你会看到“一”而不是“二”
var a = {
b : c
}
alert("here");
你什么也看不到。
【讨论】:
这在某种程度上取决于你在做什么。通常事情会停止执行,如果您使用带有控制台的智能浏览器,则会记录一条错误消息(有时这些错误消息很有帮助,甚至但并非总是如此)。
UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #
然而,有时候,东西会默默地失败,没有错误或警告,尤其是当你使用 jQuery 或其他库时。我花了好几个小时来解决为什么在 WebKit 和 Firefox 中运行良好但在 IE 中默默失败的原因,并将罪魁祸首追溯到 jQuery .append() 方法中的 PEBCAK 错误,该方法试图将一些无效的 HTML 插入 DOM。这令人抓狂,因为其他一切都运行良好,没有错误,没有警告,什么都没有,但在 IE 中,一个函数就是不会“运行”。
【讨论】:
我认为执行会停止。如果您在一行代码中断后设置警报,您将无法到达警报,这使我相信执行停止。不过,我不确定异步 XmlHtttpRequests 是否也是如此。
【讨论】: