在一般情况下,程序语句的执行是按照其书写顺序来执行的。前面的代码先执行,后面的代码后执行。但是这种简单的自上而下的单向流程只适于用一些很简单的程序。大多数情况下,需要根据逻辑判断来决定程序代码执行的优先顺序。要改变程序代码执行的先后顺序,任何编程语言都需要用到条件语句和循环语句,Javascript 也不例外。
这一节我们主要介绍 Javascript 循环语句。
Javascript 循环语句有以下几种:
- 在循环的开头测试表达式 (while 循环语句)
- 在循环的末尾测试表达式 (do...while 循环语句)
- 对对象的每个属性都进行操作 (for...in 循环语句)
- 由计数器控制的循环 (for 循环语句)
使用 for 循环语句
for 循环语句指定了一个计数器变量,一个测试条件,和更新计数器的行为。
每次循环重复之前,都要测试条件。如果测试成功,则执行循环内的代码;如果测试不成功,则不执行循环内的代码,而是执行紧跟在循环后的第一行代码。当执行该循环时,计数器变量在下次重复循环前被更新。
如果循环条件一直不满足,则永不执行该循环。如果条件一直满足,则会导致无限循环。前一种,在某种情况下是需要的,但是后一种,基本不应发生,所以写循环条件时一定要注意。
for 循环语句示例代码:
<html>
<head><title>一个使用到for循环的Javascript示例</title></head>
<body>
<p>
<script type="text/javascript">
for (i = 0; i <= 5; i++)
{
document.write(i)
document.write("<br>")
}
</script>
</p>
</body>
</html>
使用 for...in 循环语句
Javascript 提供了一种特别的循环方式来遍历一个对象的所有用户定义的属性或者一个数组的所有元素。for...in 循环中的循环计数器是一个字符串,而不是数字。它包含了当前属性的名称或者表示当前数组元素的下标。
for...in 循环语句示例代码:
<html>
<head><title>一个使用到for...in循环的Javascript示例</title></head>
<body>
<script type="text/javascript">
// 创建一个对象 myObject 以及三个属性 sitename, siteurl, sitecontent。
var myObject = new Object();
myObject.sitename = "书库网";
myObject.siteurl = "book.hdut.com";
myObject.sitecontent = "网页教程代码图库的中文站点";
//遍历对象的所有属性
for (prop in myObject)
{
document.write("属性 '" + prop + "' 为 " + myObject[prop]);
document.write("<br>");
}
</script>
</body>
</html>
使用 while 和 do...while 循环语句
while 循环和 for 循环类似。其不同之处在于, while 循环没有内置的计数器或更新表达式。如果你希望控制语句或语句块的循环执行,不只是通过 “运行该代码 n 次”这样简单的规则,而是需要更复杂的规则,则应该用 while 循环。
注意:由于 while 循环没有显式的内置计数器变量,因此比其它类型的循环更容易产生无限循环。此外,由于不易发现循环条件是在何时何地被更新的,很容易编写一个实际上从不更新条件的 while 循环。因此在编写 while 循环时应特别小心。
while 循环语句示例代码:
<html>
<head><title>一个使用到while循环的Javascript示例</title></head>
<body>
<p>
<script type="text/javascript">
i = 0
while (i <= 5)
{
document.write(i + "<br>")
i++
}
</script>
</p>
</body>
</html>
在 JScript 中还有 do...while 循环与 while 循环相似,不同处在于它总是至少运行一次,因为是在循环的末尾检查条件,而不是在开头。
do...while 循环语句示例:
<html>
<head><title>一个使用到do...while循环的Javascript示例</title></head>
<body>
<p>
<script type="text/javascript">
i = 0
do
{
document.write( i + "<br>")
i++
}
while (i <= 5)
</script>
</body>
</html>
使用 break 和 continue 语句
在 Javascript 中,当某些条件得到满足时,用 break 语句来中断一个循环的运行。(请注意,也用 break 语句退出一个 switch 块。参见 Javascript 条件语句)。如果是一个 for 或者 for...in 循环,在更新计数器变量时使用 continue 语句越过余下的代码块而直接跳到循环的下一次重复中。
break 示例代码:
<html>
<head><title>一个用break中断循环的Javascript示例代码</title>
<script type="text/javascript">
function BreakTest(breakpoint){
var i = 0;
var m = 0;
while (i < 100)
{
//当 i 等于breakpoint时,中断循环
if (i == breakpoint)
break;
m=m + i;
i++;
}
return(m);
}
</script>
</head>
<body>
<script type="text/javascript">
//设函数BreakTest参数breakpoint值为23,得到从1加到22的合计。
document.write(BreakTest(23))
</script>
</body>
</html>
continue 示例代码:
<html>
<head>
<title>一个用continue跳过后面代码,开始循环的下一次重复的Javascript代码</title>
</head>
<body>
<script type="text/javascript">
//该script代码用来输出1到10之间的奇数。
var x ;
for (x=1; x<10; x++)
{
//如果x被2整除,则跳过后面代码,开始下一次重复;
//如果x不能被2整除,则执行后面代码,输出 x 。
if (x%2==0)
continue;
document.write (x + "<br>");
}
</script>
</body>
</html>