Broswers& # 39;JS错误的处理

Broswers' Treatment of JS Errors

本文关键字:错误 处理 JS Broswers      更新时间:2023-09-26

对于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吗?或者,假设我在第三行代码后面加上了alert("line 4");。第4行会被忽略,因为JS的解释将结束在非法的JS代码行?

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

JavaScript引擎将执行代码,直到遇到异常。然后根据以下内容改变行为:

  • 如果是在try..catch,执行将从catch恢复,否则
  • 如果异步调用,则此序列将在该点结束,但其他正在进行的序列将继续。(一个简单的例子是window.setTimeout)
  • 如果它直接在<script>中,则<script>中从该点开始的其余代码将不执行,但<script>之后的代码将执行。

如果异常发生在被提升的内容中,则认为执行点在第0行。

您可以使用throw关键字轻松测试所发生的情况。例如

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