以下是You Don不知道JS的例子:
<base href="/">
如果继续使循环跳过该迭代,它如何能够打印所有数字?除此之外,&#34; console.log(i)在循环迭代结束时运行但在i ++&#34;之前运行。这应该解释为什么它从0到9打印?
答案 0 :(得分:5)
实际上在try ... catch
语句中,始终会到达并执行finally
块。
所以在你的情况下:
for (var i=0; i<10; i++) {
try {
continue;
}
finally {
console.log( i );
}
}
finally
块将在每次迭代时执行,无论您在try
块中执行什么操作,这就是打印所有数字的原因。
<强>文档强>
您可以从MDN try...catch Documentation看到:
finally子句包含在try块和catch子句执行之后但在try语句之后的语句之前执行的语句。无论是否抛出异常,finally子句都会执行。如果抛出异常,即使没有catch子句处理异常,finally子句中的语句也会执行。
答案 1 :(得分:1)
Doc:
finally子句包含在try块之后执行的语句 和catch子句执行,但在之后的语句之前执行 试试声明。无论是否,finally子句都会执行 不会抛出异常。如果抛出异常,则为语句 在finally子句中执行即使没有catch子句处理 异常。
所以最后总是在catch语句之后调用。