跳转语句

跳转语句的作用是使 JavaScript 的执行从一个位置跳转到另一个位置。

标签

语句是可以添加标签的,通过给语句定义标签,就可以在程序的任何地方通过标签名引用这条语句。也可以给多条语句定义标签(语句块、复合语句):

mainloop: while(token != null) {
    // 代码片段
    continue mainloop;   // 跳转到下一个循环
    // 代码片段
}

注:用作标签名的标识符不能是保留字。

break

单独使用 break 语句的作用是立即退出最内层的循环或 switch 语句:

for(var i = 0; i < a.length; i++) {
    if (a[i] == target) break; 
}

break 语句同样支持语句标签:

break labelname;

break 和标签一起使用的时候,程序会跳转到标签标识语句块的结束位置。如果没有任何闭合语句块指定了 break 所用的标签,会产生一个语法错误。

注意:不管 break 语句带不带标签,都不能越过函数的边界,即只能在所在的函数体内跳转,不能跳转到函数外部。

continue

continue 语句和 break 语句类似,但不是退出循环,而是转而执行下一次循环。continue 语句也可以带有标签。不管 continue 带不带标签,都只能在函数体内使用,在其他地方使用会报错:

for(var i = 0; i < a.length; i++) {
    if (!a[i]) continue; 
    total += a[i];
}

return

return 语句用于返回函数返回值作为函数调用表达式的值。return 语句只能在函数体内使用,当函数没有 return 语句的时候,调用函数的结果是 undefined。如果 return 语句单独使用不带表达式,则返回值也是 undefined

throw

所谓异常是当发生了某种异常情况或错误时产生的一个信号。抛出异常,就是用信号通知发生了异常或错误。捕获异常是指处理这个信号,从异常中恢复。在 JavaScript 中,使用 throw 语句抛出异常,使用 try/catch/finally 语句捕获并处理异常:

捕获并处理异常

如果抛出异常没有处理它的 try/catch/finally 语句,异常会向上传播到调用该函数的代码,如果没有找到任何处理异常的程序,JavaScript 会将异常当做程序错误来处理,并报告给用户。

try/catch/finally

try/catch/finally 语句是 JavaScript 的异常处理机制。其中 try 从句定义了需要执行的代码块,catch 从句用户从执行代码中捕获异常并处理,finally 从句则定义了清理代码,不管 try 块中是否产生异常,finally 块内代码总是会被执行。尽管 catch/finally 是选的,但是二者至少要一个和 try 从句进行组合才能构成完整的语句:

try {
    // 需要执行的代码逻辑
} catch(e) {
    // 当且仅当 try 语句块抛出异常才会执行这里的代码
    // 可以对异常进行处理/忽略,也可以通过 throw 语句抛给上层
} finally {
    // 不管 try 语句块是否抛出异常,这里的逻辑总是执行
    // 如果抛出了异常,则执行顺序是 try -> catch -> finally
    // 即使 try 语句块中包含了 break、continue、return 等语句,也会先执行这里的代码再退出
}

上一篇: 循环语句

下一篇: 其他语句类型