网页
综合
更新时间 2025-12-05 00:11:18
控制流与错误处理 - JavaScript | MDN
自动蜘蛛
developer.mozilla.org
正文约 2270 字
HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
Learn web development
Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
View in English Always switch to English
JavaScript 支持一套小巧的语句,特别是控制流语句,你可以用它在你的应用程序中实现大量的交互性功能。本章将对这些语句进行概览。
在本章中涉及的语句,JavaScript 参考包含更为详尽的细节。在 JavaScript 代码中,分号(;)字符被用来分割语句。
JavaScript 表达式也是语句。想要了解有关表达式的完整信息,参见表达式与运算符。
最基本的语句是用于组合语句的块语句。块由一对花括号界定:
块语句通常用于控制流语句(if、for、while)。
备注:用 var 声明的变量不是块级作用域的,而是函数作用域或脚本作用域的,且设置它们的效果会超越到块本身之外。例如:
会输出 2,因为块中 var x 语句和块前面的 var x 语句的作用域是一样的。(在 C 或 Java 中,等效的代码会输出 1。)
使用 let 或 const 会消除这个作用域效果。
条件语句是一组会在指定的条件为真时执行的指令。JavaScript 支持两种条件语句:if...else 和 switch。
使用 if 语句在逻辑条件为 true 时执行语句。使用可选的 else 子句在条件为 false 时执行语句。
这里,condition 可以是任何能求值为 true 或 false 的表达式。(想要了解求值为 true 和 false 的解释,参见布尔值。)
如果 condition 求值为 true,执行 statement1。否则,执行 statement2。statement1 和 statement2 可以是任何的语句,包括继续嵌套的 if 语句。
你也可以使用 else if 组合语句按顺序测试多个条件,就像下面一样:
在多个条件的情况下,只有第一个求值为 true 的逻辑条件才会被执行。想要执行多个语句,将其组合在一个块语句中({ /* … */ })。
一般而言,总是使用块语句是最佳实践——特别是嵌套 if 语句的时候:
一般而言,最好不要将赋值(例如,x = y)作为 if...else 的条件:
然而,在极少数情况下,你会发现自己想要这么做,while 文档中的使用赋值作为条件小节是你应该了解并遵循的通用的最佳实践语法指南。
下面这些值求值为 false(也叫做假值):
所有其他的值——包括所有的对象——在被传递给条件语句时会求值为 true。
备注:请不要混淆原始布尔值 true 和 false 与 Boolean 对象的真和假!
在下列示例中,如果 Text 对象中的字符数为 3,函数 checkData 将返回 true;否则,显示警告并返回 false。
switch 语句允许程序求一个表达式的值并且尝试将表达式的值和 case 标签进行匹配。如果匹配成功,程序会执行相关的语句。
JavaScript 求值上面的 switch 语句的过程如下:
每个 case 子句会关联一个可选的 break 语句,它能保证在匹配的语句被执行后程序可以跳出 switch 并且继续执行 switch 后面的语句。如果 break 被忽略,程序会在 switch 语句内继续执行(将会执行下一个 case 的语句,依此类推)。
在下列示例中,如果 fruitType 等于 "Bananas",程序将该值与 case "Bananas" 匹配,并执行相关语句。当执行到 break 时,程序结束 switch 并执行 switch 后面的语句。如果不写 break ,那么程序将会执行 case "Cherries" 下的语句。
你可以用 throw 语句抛出一个异常并且用 try...catch 语句处理它。
JavaScript 可以抛出任意对象。然而,并非所有抛出的对象都是生而平等的。尽管抛出数字或者字符串作为错误信息十分常见,但是用下列其中一种专门为这个目的而创建的异常类型通常更为高效:
使用 throw 语句抛出异常。throw 语句会指明要抛出的值:
你可以抛出任意表达式而不是特定类型的表达式。下面的代码抛出了几个不同类型的异常:
try...catch 语句用于标记一段要尝试的语句块,并指定抛出异常时的一个或多个响应。如果抛出了异常,try...catch 语句会捕获它。
try...catch 语句由 try 块(其包含一个或多个语句)和 catch 块(其包含在 try 块中抛出异常时要执行的语句)组成。
换句话说,你希望 try 块执行成功——但如果它没有执行成功,那么你希望将控制转移到 catch 块。如果 try 块中的语句(或者在 try 块中调用的函数里)抛出了异常,那么控制立马转移到 catch 块。如果 try 块没有抛出异常,catch 块就会被跳过。finally 块总会紧跟在 try 和 catch 块之后执行,但会在 try...catch 语句后面的语句之前执行。
本页为82搜索生成的网页快照,内容来自站内索引;演示数据的原文链接仅作示例。