Javascript Broswers&x27;JS错误的处理

Javascript Broswers&x27;JS错误的处理,javascript,browser,Javascript,Browser,对于Javavscript中的以下代码: // add HTML to container // show the container on the DOM // call a non-existent function on an object 我成功地看到Firefox和IE显示我的HTML。第三行代码显示Firebug和IE中的JS错误,似乎被抑制/忽略 浏览器通常会忽略坏的JS吗?或者,假设我添加了警报(“第4行”)在我的第三行代码之后。第四行会被忽略吗?因为JS解释将以非法的JS代码

对于Javavscript中的以下代码:

// add HTML to container
// show the container on the DOM
// call a non-existent function on an object
我成功地看到Firefox和IE显示我的HTML。第三行代码显示Firebug和IE中的JS错误,似乎被抑制/忽略

浏览器通常会忽略坏的JS吗?或者,假设我添加了
警报(“第4行”)在我的第三行代码之后。第四行会被忽略吗?因为JS解释将以非法的JS代码行结束


我在jsFiddle中测试了我的场景,但我不确定jsFiddle的行为是否与浏览器相同。

JavaScript引擎将执行代码,直到出现异常为止。然后,行为会根据以下情况发生变化:

  • 如果处于a状态,则执行将从
    catch
    恢复,否则
  • 如果异步调用,该序列将在该点结束,但其他正在进行的序列将继续。(一个简单的例子是使用
    window.setTimeout
  • 如果它直接位于
    中,则从该点开始的
    中的其余代码将不会执行,但后续
    中的代码将执行
如果异常发生在某个被提升的对象中,那么将执行点视为在第0行

您可以使用关键字轻松地测试发生了什么。比如说

console.log(1); // logs
console.log(2); // logs
throw 'eep';
console.log(4); // does not log

坏js会杀死整个
块。(谢天谢地)在错误恢复下一步时没有VB的
等价物
@MarcB,如果我看到一个JS块的HTML显示,其中包含对一个没有该函数的对象的函数调用,这怎么可能是真的?因为JS不会及时返回到脚本块中撤消错误发生之前在脚本块中完成的内容。dom操作仍然会发生,但一旦您遇到错误行,执行就会停止,脚本块实际上已经失效。当javascript遇到错误时,它将引发异常。您可以,但默认情况下,唯一发生的事情是在控制台中记录异常。ahhh。。因此,在我上面的示例中,
alert(“第4行”)
不会被调用,因为它上面的那行(#3)会停止JS执行