如何在JavaScript中继续使用try.finally for循环?

时间:2016-08-15 08:33:58

标签: javascript loops for-loop

以下是You Don不知道JS的例子:

<base href="/">

如果继续使循环跳过该迭代,它如何能够打印所有数字?除此之外,&#34; console.log(i)在循环迭代结束时运行但在i ++&#34;之前运行。这应该解释为什么它从0到9打印?

2 个答案:

答案 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语句之后调用。