如果浏览器在网页上执行JavaScript并遇到无效的JavaScript (例如somerandomthingy;)JavaScript的执行是否在此时停止,或者异步操作是否继续。此外,JavaScript事件仍然有效(例如onclick)。
答案 0 :(得分:21)
是的,除了异步的。 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;
未捕获的ReferenceError:未定义somerandomthingy
运行1 2未定义
所以:
a
和b
c
尚未设置至于'on onclick仍然有用' - 好吧,如果处理程序是在运行的代码中设置的(即在错误之前),那么;如果它是在错误代码之后放置的,它将不会绑定处理程序,因此事件将不起作用。
答案 1 :(得分:2)
错误后没有执行任何代码。
function inAFunction(){
alert("one");
x = y;
alert("two");
}
inAFunction();
你会看到“一个”而不是“两个”
alert("one");
x = y;
alert("two");
你会看到“一个”而不是“两个”
var a = {
b : c
}
alert("here");
你什么也看不见。
答案 2 :(得分:1)
这在某种程度上取决于你在做什么。通常情况会停止执行,如果您使用带控制台的智能浏览器,则会记录一条错误消息(有时这些错误消息很有帮助,甚至,但并非总是如此)。
UNCAUGHT EXCEPTION: SYNTAX ERROR, UNRECOGNIZED EXPRESSION: #
然而,有时候,东西会默默地失败而没有错误或警告,特别是如果你使用的是jQuery或其他库。我花了几个小时来解决为什么WebKit和Firefox中的某些东西运行良好但在IE中无声地失败,并且在jQuery .append()方法中追踪到了一个PEBCAK错误,该方法试图将一些无效的HTML插入到DOM中。它令人抓狂,因为其他一切工作正常,没有错误,没有警告,没有,但在IE中,一个功能就是不会“走了”。
答案 3 :(得分:0)
我认为执行停止了。如果在一行代码中断后设置警报,则无法访问警报,这会导致我认为执行停止。我不确定asynch XmlHtttpRequests是否也是如此。