循环语句:
所谓循环语句是指满足条件的情况下反复执行一个操作。
- while 语句是一种先判断,后运行的循环语句。也就是说,必须满足条件了之后,方可运行循环体。
- do while语句:
do…while 语句是一种先运行,后判断的循环语句。也就是说,不管条件是否满足,至少先运行一次循环体。 - for语句:
for 语句也是一种先判断,后运行的循环语句。但它具有在执行循环之前初始变量和定义循环后要执行代码的能力
while语句
while语句是基本的循环语句,也就是条件判断语句。其语法格式如下:
while (expression) {
statement
}
当条件表达式为expression的值为true时,执行大括号{}中的语句,当执行完大括号{}中的语句后,再次检查条件表达式的值,如果仍是true,则再次执行大括号{}中的语句,如此反复执行,直到条件表达式的值为false,结束循环,继续执行while循环后面的代码。
使用while语句时,必须先声明循环变量并在循环体中指定循环变量的步幅,否则while语句将成为一个死循环。
在下面的程序中将出现一个死循环,代码如下:
var i=3;
while (i<5){
alert("坚持");
}
在上述代码中,循环体中没有指定循环变量的步幅,即始终没有改变i的值,所以i<5将永远返回true,所以循环永不结束。程序的正确代码如下:
var i=3;
while (i<5){
alert("坚持");
i++;
}
do…while语句
do…while循环语句和while循环语句非常相似,只是do…while循环语句在循环底部检测循环表达式,而不是在中的顶部进行检测。因此应用do…while循环语句时该语句的循环体至少被循环一次。其语法格式如下:
do{
statement
}while (expression);
下面的实例中分别应用while语句和do…while语句输出字符串中的内容,以比较二者的不同,代码如下:
<script>
var m=8;
var n=9;
while(m<=5){
document.write("这是第“+m+”行");
m++;
}
do{
document.write("这是第"+n+"行");
n++;
}while(n<=5);
</script>
//运行结果:
这是第九行
do....while语句结尾处的while语句括号后面有一个分号" ; ",在书写过程中一定不能遗漏,否则
javascript会认为循环语句是一个空语句,后面大括号{}中的代码一次也不会执行,并且程序陷入死循环。
for语句
for语句是javascript语言中应用比较广泛的循环语句。通常for语句使用一个变量作为计数器来执行循环的次数,整个变量就称为循环变量。
其语法格式如下:
for (语句 1; 语句 2; 语句 3)
{
被执行的代码块
}
语句 1 (代码块)开始前执行
语句 2 定义运行循环(代码块)的条件
语句 3 在循环(代码块)已被执行之后执行
- 语句1
通常我们会使用语句 1 初始化循环中所用的变量 (var i=0)。
语句 1 是可选的,也就是说不使用语句 1 也可以。
您可以在语句 1 中初始化任意(或者多个)值:
实例:
for (var i=0,len=cars.length; i<len; i++)
{
document.write(cars[i] + "<br>");
}
- 语句2
通常语句 2 用于评估初始变量的条件。
语句 2 同样是可选的。
如果语句 2 返回 true,则循环再次开始,如果返回 false,则循环将结束。
如果您省略了语句 2,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃。
- 语句3
通常语句 3 会增加初始变量的值。
语句 3 也是可选的。
语句 3 有多种用法。增量可以是负数 (i–),或者更大 (i=i+15)。
语句 3 也可以省略(比如当循环内部有相应的代码时):
实例:
var i=0,len=cars.length;
for (; i<len; )
{
document.write(cars[i] + "<br>");
i++;
}
参数
- Initialize: 是一个循环变量,该变量可以在for语句声明,也可以在for语句中声明。
- Test: 是一个基于循环变量的条件表达式,条件满足就进入到循环体({}中的内容),循环体中的代码执行结束后返回这里重新进行判断,直到条件不成立时结束循环。
- Increment: 是一个基于循环变量的操作,在每次循环体中的代码执行完毕,即将进行下一轮条件判断前执行,increment操作和test条件语句共同决定{}中代码的循环次数。
for语句可以使用break语句来终止循环语句的执行。break语句默认情况下是终止当前的循环语句,
而当break语句与Label语句同时就可以终止由Label语句标注的循环语句。
在下面的for语句中,同时应用了break语句和Label语句。
程序代码如下:
look; //创建一个label语句
for (var m=0;m<11;m++){ //创建一个for语句
fpr (var n=0;n<=5;n++){ //创建一个for语句
if(n>3) { //判断如果n大于3,则执行下面的内容
break look; //同时应用break语句和label语句"look"语终止整个循环语句
}
}
}
上述代码中的look就是label语句,它还可以使用其他任意的名称,其作用就是标注任意一个语句,本例标注了循环语句for(var m=0;m<11;m++)…,而且与break语句同时使用,结果导致脚本中没有任何内容输出。
for…in语句
for…in循环语句和for循环语句十分相似,for…in语句用来便利对象的每一个对象的每一个属性,每次都将属性名作为字符串保存在变量里。
其语法格式如下:
for (variable in object) {
....statement
}
在该语法中,variable是一个变量名,声明一个变量的var 语句、数组的某个元素或者对象的一个属性(例如,它应该是一个适用于赋值表达式左边的值);object是一个对象名,或者是计算结果的表达式。statement通常是一个原始语句或者语句块,由它构成循环的主体。
下面应用for…in循环语句输出对象中的属性名和值。首先创建一个对象,并指定对象的属性,然后应用for…in循环语句输出对象的所有属性和值。
程序代码如下:
var objectes={user:"xxx",age:23,QQ:"1838**",e_mail:"ppp*** @sina.com"
for (var example in objectes) { //循环语句
document.write("属性: "+example"+"+object[example]+"<br>")
}
//运行结果:
属性:user=xxx
属性:age=23
属性:QQ=1838**
属性: e_mail=ppp***@sina.com
应用for…in循环语句可以为对象中的每个属性执行一个语句的集合。
可以对javascript中的任何对象应用for…in循环语句。