1

对于 Javascript 中的以下代码:

// 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");在第三行代码之后添加。由于 JS 解释会在非法的 JS 代码行结束,第 4 行会被忽略吗?

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

4

1 回答 1

3

JavaScript 引擎将执行代码,直到遇到Exception。然后行为会根据以下情况发生变化:

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

如果异常发生在被提升的东西中,那么将执行点视为在第 0 行。

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

console.log(1); // logs
console.log(2); // logs
throw 'eep';
console.log(4); // does not log
于 2013-01-10T16:09:33.587 回答