当遇到无效行时,javascript执行是否会停止?

时间:2011-08-24 20:04:33

标签: javascript

如果浏览器在网页上执行JavaScript并遇到无效的JavaScript (例如somerandomthingy;)JavaScript的执行是否在此时停止,或者异步操作是否继续。此外,JavaScript事件仍然有效(例如onclick)。

4 个答案:

答案 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未定义

所以:

    已设置
  • ab
  • 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: #

enter image description here

然而,有时候,东西会默默地失败而没有错误或警告,特别是如果你使用的是jQuery或其他库。我花了几个小时来解决为什么WebKit和Firefox中的某些东西运行良好但在IE中无声地失败,并且在jQuery .append()方法中追踪到了一个PEBCAK错误,该方法试图将一些无效的HTML插入到DOM中。它令人抓狂,因为其他一切工作正常,没有错误,没有警告,没有,但在IE中,一个功能就是不会“走了”。

答案 3 :(得分:0)

我认为执行停止了。如果在一行代码中断后设置警报,则无法访问警报,这会导致我认为执行停止。我不确定asynch XmlHtttpRequests是否也是如此。

相关问题