![HTML5 APP开发从入门到精通(微课精编版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/420/31794420/b_31794420.jpg)
3.5 语句
语句就是JavaScript指令,通过这些指令可以设计程序的逻辑执行顺序。
提示:JavaScript定义了很多语句,具体分类和说明请扫码阅读。
3.5.1 表达式语句和语句块
如果在表达式的尾部附加一个分号,它就会形成一个表达式语句。JavaScript默认独立成行的表达式也是表达式语句,解析时自动补加分号。表达式语句是最简单、最基本的语句。这种语句一般按着从上到下的顺序依次执行。
【示例】语句块就是由大括号包含的一个或多个语句。在下面的代码段中,第一行是一个表达式语句,第二行到第五行是一个语句块,该语句块中包含两个简单的表达式语句。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P65_9329.jpg?sign=1738899877-1a1b2UpD2HK5Lc7pElvp2YmWMgFmJJgJ-0-8bfcba620a4a6822545a568389fb4940)
3.5.2 条件语句
程序的基本逻辑结构包括3种:顺序、选择和循环。大部分控制语句都属于顺序结构,而条件语句属于选择结构,它主要包括if语句和switch语句。
1.if语句
if语句的基本语法如下。
if (condition) statements
其中,condition是一个表达式,statements是一个句子或段落。当condition表达式的结果不是false且不能够转换为false时,程序就执行statements从句的内容,否则就不执行。
【示例1】下面的条件语句的从句是一个句子。该条件语句先判断指定变量是否被初始化,如果没有被初始化,则新建对象。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P66_40879.jpg?sign=1738899877-a1HWR6lrsufRP7Orh3oA8B3ngXMm73HM-0-ccf46863058aae9ae6f62d287e6a2743)
【示例2】下面的条件语句的从句是一个段落。该条件语句先判断变量a是否大于变量b,如果大于则交换值。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P66_40880.jpg?sign=1738899877-LQKPiQ2z8eYNWSH2hd67TFFzHCZEKYZH-0-8e9d3385e3bea2a773d0f17f8258a53d)
如下语法形式在if语句的基本形式上还可以扩展,它表示如果condition表达式条件为true,则执行statements1从句,否则执行statements2从句。
if (condition) statements1 else statements2
【示例3】可以按如下方式在示例2的基础上扩展它的表现行为。如果a大于b,则替换它们的值,否则输出提示信息,如图3.5所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P66_9394.jpg?sign=1738899877-lI3vR7GQoKDAhqQNOT2zgToUQmPIcQmY-0-f6bfe30f4d579286e53643512a0b1bf0)
图3.5 条件语句的应用
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P67_9486.jpg?sign=1738899877-wqtO2Jme9ZLtSews7imA0eUa9eyErIxt-0-6f137fa9fd6e2c07bcdbc95cbf2bded4)
2.switch语句
对于多条件的嵌套结构,更简洁的方法是使用switch语句,其语法格式如下。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P67_40882.jpg?sign=1738899877-S09UXsEStht12JOyGejRdXIpnS0ee9dL-0-ec95915619aaa635e3dff34228926a1f)
switch语句首先计算switch关键字后面的表达式,然后按出现的先后顺序计算case后面的表达式,直到找到与switch表达式的值等同(===)的值为止。case表达式通过等同运算来进行判断,表达式匹配的时候不进行类型转换。
如果没有一个case标签与switch后面的表达式匹配,switch语句就开始执行标签为default的语句体。如果没有default标签,switch语句就跳出整个结构体。在默认情况下,default标签通常放在末尾,当然也可以放在switch主体的任意位置。
【示例4】本示例使用prompt()方法获取用户输入的值,然后根据输入的值判断用户是几年级,演示效果如图3.6所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P67_9488.jpg?sign=1738899877-Nd1ogUK2TJmxdfKHJnmkfVU8M26QPFPL-0-eb86a02dda6c2fe45e8ed2061d57e28e)
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P68_9548.jpg?sign=1738899877-lyWpDewVMps5a0MCmZd0yxoZux85nevo-0-3659f53e7f9a0c0d6d2edd901739c7f3)
图3.6 switch语句的应用
3.5.3 循环语句
循环语句就是能够重复执行相同操作的语句。作为JavaScript的基本结构,循环语句在应用开发中也是经常使用。与if语句一样,循环语句也有两种基本语法形式:while语句和for语句。
1.while语句
while语句的基本语法形式如下:
while (condition) { statements }a
while语句在每次循环开始之前都要计算condition表达式。如果为true,则执行循环体内的语句;如果为false,就跳出循环体,转而执行while语句后面的语句。
【示例1】在下面这个循环语句中,当变量a大于等于10之前,while语句将循环10次输出显示变量a的值,变量a的值在结构体内不断递增。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P68_40888.jpg?sign=1738899877-hJ5FBVavwIZA8yGogvMFBhWztmh0ZUk2-0-9c75716525c0586848cc5445d0a475a1)
while语句还有一种特殊的变体,其语法形式如下。
do statement while (condition);
在这种语句体中,首先执行statement语句块一次,每次循环完成之后计算condition条件,并且会在每次条件计算为true的时候重新执行statement语句块。如果condition条件计算为false,会跳转到do/while后面的语句。
【示例2】可将示例1改写为下面的形式。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P68_40890.jpg?sign=1738899877-zdcxZw4zdR4reqJsQGH2U2TJVZu3Z1bF-0-bb84838052533f445427b2fa4072de17)
2.for语句
for语句要比while语句简洁,因此更受用户喜欢,其语法形式如下。
for ([initial-expression;] [condition;] [increment-expression]) { statements }
for语句首先计算初始化表达式(initial-expression),典型情况下用于初始化计数器变量,该表达式可选用var关键字声明新变量。然后在每次执行循环的时候计算该表达式,如果为true,就执行statements中的语句。该条件测试是可选的,如果缺省则条件永远为true。此时,除非在循环体内使用break语句,否则不能终止循环。increment-expression表达式通常用于更新或自增计数器变量。
【示例3】将上面的示例用for语句设计,则代码如下。
for(var i = 0; i < 10; i ++ ){ document.write(i); }
for循环语句也可以引入多个计数器,并在每次循环中改变它们的值。例如:
for(var a = 1, b = 1, c = 1; a + b + c < 100; a ++ , b += 2 , c *= 2 ){ document.write( "a=" + a + ",b=" + b + ",c=" + c + "<br/>"); }
上面的示例引入了3个计数器,并分别在每次循环中改变它们的值,循环的条件是3个计数器的总和小于100,执行效果如图3.7所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P69_9599.jpg?sign=1738899877-kh9fqOlJ7d8JljUeoCy9j1tqC1PYVvyd-0-94f2c0805fed4b3ef3b562e4f50f3b24)
图3.7 多计数器的循环语句运行效果
3.5.4 跳转语句
跳转语句能够从所在的分支、循环或从函数调用返回的语句跳出。JavaScript的跳转语句包括3种:break语句、continue语句和return语句。
break语句用来退出循环或者switch语句,其语法格式如下。
break;
【示例1】在下面这个示例中设置while语句的循环表达式永远为true(while能够转换数值1为true)。然后在while循环结构体中设置一个if语句,判断当变量i大于50时,程序跳出while循环体。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P70_40899.jpg?sign=1738899877-eNhgdVAOQcLlKyxEmyCH6g4BEI9KEaZk-0-65fea8df458068964d69783715ba65cc)
【示例2】跳转语句也可以与标记结合使用,实现跳转到指定的行,而不是仅仅跳出循环体。在下面的嵌套for循环体内,在外层for语句中定义一个标记x,然后内层for语句使用if语句设置,当a大于5时跳出外层for语句,运行效果如图3.8所示。
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P70_9661.jpg?sign=1738899877-2cb9HKZp6Prr8Uq2fGeGZ7MEogRgnHuD-0-a8eaa6b250f828d21fe0cb56d070085a)
![](https://epubservercos.yuewen.com/43C118/17214367505511406/epubprivate/OEBPS/Images/Figure-P70_9662.jpg?sign=1738899877-wUmRw3uBnWgAtY51CTqaIzppWh5As0vy-0-5bcf20d79d726b8dcba778cfe6518979)
图3.8 跳转语句与标记配合使用
continue语句的用法与break语句相似,唯一的区别是continue语句不会退出循环,而是开始新的迭代(即重新执行循环语句)。不管带标记还是不带标记,continue语句只能用在循环语句的循环体中。
return语句用来指定函数的返回值,它只能用在函数或者闭包中,其语法形式如下。
return [expression]
当执行return语句时,程序先计算expression表达式,然后返回表达式的值,并将控制逻辑从函数体内返回。