![动态网页设计与开发:JavaScript + jQuery](https://wfqqreader-1252317822.image.myqcloud.com/cover/481/32441481/b_32441481.jpg)
2.4 JavaScript循环语句
在JavaScript中有四种类型的循环语句。
➢ for:在指定的次数中循环执行代码块。
➢ for-in:循环遍历对象的属性。
➢ while:当条件为true时循环执行代码块。
➢ do-while:与while循环类似,只是先执行代码块再检测条件是否为true。
2.4.1 for循环
for循环的语法结构如下:
语法
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_51_3.jpg?sign=1739339995-aEgoiThbHjhn0LmZUDganxc1x8bxHAV1-0-6942367ae0eca67366032d39976c8061)
流程结构如图2.10所示,其中:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_51_4.jpg?sign=1739339995-yJTWjesRa3tqsXWYFLCGfu35jU6TflKx-0-cda2f33ad4f0c8da6bd6aca6bacb6956)
图2.10 循环结构——for循环语句
➢ 语句1在循环开始之前执行,对应图2.10中的“①初始化表达式”部分。
➢ 语句2为循环的条件,对应图2.10中的“②循环条件”部分。
➢ 语句3为代码块被执行后需要执行的内容,对应图2.10中的“④操作表达式”部分。
➢ 语句1、语句2、语句3之间用“;”分隔。
➢ {}中的执行语句,对应图2.10中的“③循环体”部分。
例如:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_52_1.jpg?sign=1739339995-j6M1AxEQzKiHkgyTrhYwhEJtjvRSRYBt-0-6c30aa1dc006df10002ec8fd3f37d8dc)
上述代码表示从变量i=0开始执行for循环,每次执行前判断变量i是否小于10,如果满足条件则执行for循环内部的代码块,然后令变量i自增1。直到变量i不再小于10则终止该循环语句。
通常情况下语句1都是用于声明循环所需使用的变量初始值的,例如i=0。该语句也可以在for循环之前就声明完成,并在for循环条件中省略语句1的内容。例如:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_52_2.jpg?sign=1739339995-ZNcaS5FUH3BvxmKLofeDm7L5U0NZCNeu-0-43ee17131b2f44e00772d433c3f7c4a4)
上述代码的运行效果与前一段示例完全相同。
【示例4】 JavaScript for循环的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_52_3.jpg?sign=1739339995-YRVtWSJtI5wZvjbgBMVIt4jvgpZQiVxf-0-11edd87524870b3cd8aecb21703304e9)
示例4在浏览器中的运行效果如图2.11所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_52_4.jpg?sign=1739339995-DTTApQfGq0QmvI8SV9uf3Qysv7Mv77Kl-0-0a21444f6cc31ea665d7e84c4a052c54)
图2.11 示例4运行效果
2.4.2 for-in循环
在JavaScript中,for-in循环可以用于遍历对象的所有属性和方法。其语法结构如下:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_52_5.jpg?sign=1739339995-VtsVkjycSsLnR4Yt0q7jvAQ5l0TLjQnx-0-6a6804713ae21d5e4621ee1808518850)
其中x是变量,每次循环将按照顺序获取对象中的一个属性或方法名;Object指的是被遍历的对象。例如:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_1.jpg?sign=1739339995-zoJVIdGzM0PXPPyoe2OzY00Hq9ktIodb-0-5cd70279ca168571ac109e8270a61214)
其中变量x指的是people对象中的属性名称,而people[x]指的是对应的属性值。
【示例5】 JavaScript for-in循环的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_2.jpg?sign=1739339995-p9FeNP1MCWFnyAjPrFaSyM2ZJ0UNjqD1-0-c2443f15c2a086bdb1005534a40dd92d)
示例5在浏览器中的运行效果如图2.12所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_3.jpg?sign=1739339995-5SqTAIIHtb5GMFsDGBnuOVdHX5BIxy02-0-1ab16426fbea2726e69036783a2638b1)
图2.12 示例5运行效果
2.4.3 while循环
while循环又称为前测试循环,必须先检测表达式的条件是否满足,如果符合条件才开始执行循环内部的代码块。其语法结构如下:
语法
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_4.jpg?sign=1739339995-BNVp1L0lqjNmTe4NVbTsYqjQIMAQKofy-0-e462db91fa2b90447e3bfde7570e61fc)
例如:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_5.jpg?sign=1739339995-m1LEQVKKwkUby3cF406j77rPKnWy2cWX-0-208bfbf85d306d6dd1018dca19706383)
上述代码表示将初始值为1的变量i进行自增,在没有超过10的情况下每次自增1。流程结构如图2.13所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_53_6.jpg?sign=1739339995-VP8pFyrkIRpxGDXSSOQKQgEmOHC3aR18-0-3f12f1de8f8010719d37119b861a275d)
图2.13 循环结构——while循环语句
【示例6】 JavaScript while循环的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_1.jpg?sign=1739339995-vQlZrkdr4QcSKz43MSZwEWTQWWJ9YNCP-0-d750fdd9fbc01747030ba418226d77cd)
示例6在浏览器中的运行效果如图2.14所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_2.jpg?sign=1739339995-G5yzKMQVgnxvgPm3QDyD7gbbzK8rP9Ee-0-d937313d72cc5b1bf7cdac1062e89a5a)
图2.14 示例6运行效果
2.4.4 do-while循环
do-while循环又称为后测试循环,不论是否符合条件都先执行一次循环内的代码块,然后再判断是否满足表达式的条件,如果符合条件则进入下一次循环,否则将终止循环。其语法结构如下:
语法
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_3.jpg?sign=1739339995-nYkARlCMHGNjwIu0wJewLlZHVgv5nqgl-0-91876adf7f2d1ec81eff3b86d2695638)
例如:
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_4.jpg?sign=1739339995-lwuEkCcuHeGZd2MWzN3lfuJcjO5gOFOS-0-a2594aee28bf216bfc1c5725dbee3f27)
流程结构如图2.15所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_5.jpg?sign=1739339995-uyFIUo5JkDWAQd3DATLnXSzFajM1cO1j-0-de05e4c73573f8896d5683434401e79c)
图2.15 循环结构——do-while循环语句
【示例7】 JavaScript do-while循环的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_54_6.jpg?sign=1739339995-Sn5cqciGvJfImDMWGVzbGA8H7USMImDX-0-52029bf2f7ed38dd4b28ed3924eacc2b)
示例7在浏览器中的运行效果如图2.16所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_55_1.jpg?sign=1739339995-0WSsq4FgTaXAHLJgFZjogyUuZoSX8WKI-0-e9452dac9a18c9f397720bdc73cd1880)
图2.16 示例7运行效果
2.4.5 break和continue
跳转语句用于实现程序执行过程中的流程跳转,常用的跳转语句有break和continue语句。
break语句可以用于终止全部循环,continue语句用于中断本次循环,但是会继续运行下一次循环语句。
【示例8】 JavaScript break的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_55_2.jpg?sign=1739339995-JpyApYS8qPiky9WQ6OJBNyu9HPvkzf5X-0-b0fd1bd7c1e5637bd1328f3bd42bebdb)
示例8在浏览器中的运行效果如图2.17所示。
【示例9】 JavaScript continue的简单应用
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_55_3.jpg?sign=1739339995-9I6c6rBx2YDWHelqRSb92wEvbdjZShl8-0-36becddeaa344e2445127265b9a4ae5e)
示例9在浏览器中的运行效果如图2.18所示。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_55_4.jpg?sign=1739339995-ZMVcpVOi7shGCQyqn4aE5e3lIpL3vD5w-0-9adf8552d9455b65965f19613e1a1015)
图2.17 示例8运行效果
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_55_5.jpg?sign=1739339995-MYYH8wAE1fIyCrelJ5XgxZFVPTm49CNB-0-9718bcf5d038c32588e5c956a7f71256)
图2.18 示例9运行效果
说明
break与continue的区别:break语句可应用在switch和循环语句中,其作用是终止当前语句的执行,跳出switch选择结构或循环语句,执行后面的代码。而continue语句用于结束本次循环的执行,开始下一轮循环的执行操作。
2.4.6 技能训练
上机练习5 九九乘法表
需求说明
➢ 使用JavaScript中的循环语句实现九九乘法内容显示,如图2.19所示。
代码实现思路
(1)找规律,假设最上面的一层作为第1层,表格的分布规律如下:
①九九乘法表的表格是由9行、每行最多9列的单元格组成的。
②乘法表的层数=表格的行数=每行中的列数。如乘法表的第3层,是表格的第3行,且共有3个单元格。
![](https://epubservercos.yuewen.com/DE91A3/17518673407512906/epubprivate/OEBPS/Images/39132_56_1.jpg?sign=1739339995-msg0rZJ9cJfbcl4aS3oFurPTqtlvj7uK-0-e7838eea1d9199d0bfcccfef0738e9ae)
图2.19 九九乘法
(2)找规律,假设最上面的一层作为第1层,乘法运算的规律如下:
① 被乘数的取值范围在“1~每行中的列数”之间。如表格第3行中被乘数的值在1~3之间。
②乘数的值=表格的行数。如表格第3行中乘数的值就为3。
本章总结
➢ JavaScript的基本数据类型,包括undefined、null、string、number和boolean类型。
➢ JavaScript不同类型之间的转换方法,包括转换成字符串、数字和强制类型转换。
➢ 根据运算符的不同功能分别介绍了赋值运算符、算术运算符、逻辑运算符、关系运算符、相等性运算符以及条件运算符。
➢ 在JavaScript条件语句部分介绍了if和switch语句的用法。
➢ 在JavaScript循环语句部分介绍了for、for-in、while、do-while循环语句的用法。
本章作业
一、选择题
1.下面哪一个不是JavaScript运算符?( )
A. =
B. ==
C. &&
D. $#
2.下面哪一个表达式的返回值为true?( )
A. !(3<=1)
B. (1!=2)&&(2<0)
C. !(20>3)
D. (5!=3)&&(50<10)
3.下面关于运算符的说法错误的是( )。
A. 逗号运算符的优先级别最低
B. 同一表达式中&的级别高于&&
C. 表达式中赋值运算符总是最后执行的
D. 表达式中圆括号的优先级别最高
4.语句for(k=0;k=1;k++){}和语句for(k=0;k==1;k++){}的执行次数分别为( )。
A. 无限次和0
B. 0和无限次
C. 都是无限次
D. 都是0
5.下列选项中,与0相等(==)的是( )。
A. null
B. undefined
C. NaN
D. ''
6.表达式Number('12age')&&parseFloat('160height')的运行结果为( )。
A. 1920
B. 160
C. 12
D. NaN
7.下面关于逻辑运算符的说法错误的是( )。
A. 逻辑运算有时会出现短路的情况
B. !a表示若a为false则结果为true,否则相反
C. 逻辑运算的返回值是布尔型
D. a||b表示a与b中只要有一个为true,则结果为true
8.下面关于赋值运算符的说法正确的是( )。
A. 运算符“=”在JavaScript中可表示相等
B. 赋值运算符都是从左向右进行运算的
C. 运算符“+=”表示相加并赋值
D. 运算符“-=”表示相减并赋值
9.下列选项中,与三元运算符的功能相同的是( )。
A. if语句
B. if else语句
C. if-else if-else语句
D. 以上答案皆正确
10.以下会出现死循环的是( )。(选择2项。)
A. for(;;){break;}
B. for(;;){continue;}
C. while(1){break;}
D. while(1){continue;}
二、综合题
1.请简述变量名定义时需要遵循的规则。
2.JavaScript的基本数据类型有哪些?
3.请分别说出下列内容中变量x的运算结果。
(1) var x=9+9;
(2) var x=9+"9";
(3) var x="9"+"9";
4.请分别说出下列数据类型转换的结果。
(1) parseInt("100plus101")
(2) parseInt("010")
(3) parseInt("3.99")
(4) parseFloat("3.14.15.926")
(5) parseFloat("A",16)
5.请分别说出下列布尔表达式的返回值。
(1) ("100">"99")&&("100">99)
(2) ("100"==100)&&("100"===100)
(3) (!0)&&(!100)
(4) ("hello">"javascript")||("hello">"HELLO")
6.转义字符\n的作用是什么?如何使用转义字符输出双引号?
7.while循环与do-while循环的区别是什么?
8.break和continue的区别是什么?
9.有红、白、黑三种球若干个,其中红、白球共25个,白、黑球共31个,红、黑球共28个,求这三种球各有多少个?
10.请编写代码生成指定行列的表格。