电脑爱好者,提供IT资讯信息及各类编程知识文章介绍,欢迎大家来本站学习电脑知识。 最近更新 | 联系我们 RSS订阅本站最新文章
电脑爱好者
站内搜索: 
当前位置:首页>> Javascript>>控制程序的流程:

控制程序的流程

来源:远方网络 | 2005-3-7 22:30:55 | (有1868人读过)

JScript 教程
--------------------------------------------------------------------------------

为什么要控制执行流程?
经常需要脚本在不同的条件下完成不同的事情。例如,您可以编写一个每小时检查时间的脚本,并在这一天中适当地更改某些参数。您也可以编写一个可以接收某种输入并采取相应操作的脚本。或者可以编写一个重复指定操作的脚本。
您可以测试若干种条件。Microsoft JScript 中所有的条件测试结果都是 Boolean 值,因此任何测试的结果是 true 或 false。您可以自由地测试 Boolean 类型、数值类型或字符串类型的值。

JScript 提供了用于各种可能性的控制结构。最简单的控制结构是条件语句。

使用条件语句
JScript 支持 if 和 if...else 条件语句。在 if 语句中将测试一个条件,如果该条件满足测试,就将执行所编写的 JScript 编码。(在 if...else 语句中,如果条件不满足测试,则将执行不同的代码。)最简单的 if 语句格式可以在一行中写完,不过更常见的是多行的 if 和 if...else 语句。
下述示例演示了使用 if 和 if...else 语句的各种可能的语法。第一个示例演示了最简单的 Boolean 测试。当(且仅当)括号之间的项的值为 true 时,if 后续的语句或语句块才会被执行。

// smash() 函数是在该代码的其他地方定义的。
if (newShip)
smash(champagneBottle,bow); // Boolean 测试,看 newShip 是否为真。

// 在本示例中,除非两个条件都为真,否则该测试将不会被满足。
if (rind.color == "deep yellow " && rind.texture == "large and small wrinkles")
{
theResponse = ("Is it a Crenshaw melon? <br> ");
}

// 在本示例中,只要任何一个条件为真,则测试即会满足。
var theReaction = "";
if ((lbsWeight > 15) || (lbsWeight > 45))
{
theReaction = ("Oh, what a cute kitty! <br>");
}
else
theReaction = ("That's one huge cat you've got there! <br>");

条件运算符
JScript 也支持隐式的条件格式。该格式在要测试的条件后使用一个问号(而不是在条件前的 if ),并指定两个可选项,一个在满足条件时使用,另一个在条件不满足时使用。两个选择项之间用一个冒号隔开。
var hours = "";

// 下面的代码指定 hours 是包含 theHour 的内容,
// 还是包含 theHour - 12 的内容。

hours += (theHour >= 12) ? " PM" : " AM";


--------------------------------------------------------------------------------


提示 如果要一起测试多个条件,并且知道某个条件比其他条件更可能满足或不满足测试,(根据这些测试是用 OR (||) 还是 AND (&&) 连接的,可以通过将该条件放在条件语句的最前面来加速脚本的执行。例如,如果三个条件都必须为真(使用 && 运算符),并且第二个测试失败,则第三个条件不会被测试。
类似地,如果多个条件中只要有一个为真(使用 || 运算符),则当任何一个条件满足该测试时测试则停止。如果要测试的条件包括函数调用或其他代码,这种处理方式就特别有效。

快速判别的副作用的一个示例是:在下例中如果 runfirst() 返回 0 或 false, 则 runsecond 不会被执行。

if ((runfirst() == 0) || (runsecond() == 0))
// 若干代码



--------------------------------------------------------------------------------



使用重复或循环
有多种方式来重复执行一条语句或语句块。通常重复执行被称为 循环。 典型情况是用某个变量测试来进行控制,每执行一次循环变量的取值都会更改。 Microsoft JScript 支持很多种循环: for 循环、 for...in 循环、 while 循环、 do...while 循环和 switch 循环。
使用 for 循环
for 语句指定了一个计数器变量,一个测试条件,以及更新该计数器的操作。在每次执行循环之前(这称为一遍循环或一次重复),都将测试该条件。在执行该循环后,计算机变量将在下一次循环之前被更新。
如果循环条件永不会满足,则根本不会执行该循环。如果测试条件始终满足,则将导致无限循环。在有些情况下,前者可能是合乎需要的,而后者几乎没有用处,因此在编写循环条件时一定要小心。

/*
更新表达式 (下例中的 "icount++")将在循环结束时被执行,即在构成循环主体的语句块被执行后,在测试条件之前。
*/

var howFar = 11; // 将循环次数限制为 11。

var sum = new Array(howFar); // 创建一个称为 sum 并具有 11 个成员的数组,这 11 个成员从 0 到 10。
var theSum = 0;
sum[0] = 0;

for(var icount = 1; icount < howFar; icount++) { // 在本例中将从 1 到 10 进行计数。
theSum += icount;
sum[icount] = theSum;
}

var newSum = 0;
for(var icount = 1; icount > howFar; icount++) { // 该循环根本不会被执行。
newSum += icount;
}

var sum = 0;
for(var icount = 1; icount > 0; icount++) { // 这是一个无限循环。
sum += icount;
}

使用 for...in 循环
JScript 提供了一种特别的循环方式来遍历一个对象的所有属性。 for...in 循环中的循环计数器将遍历数组中的所有索引。它是一个字符串,而不是数字。
for (j in tagliatelleVerde) // tagliatelleVerde 是一个有多个属性的对象
{
// 各种 JScript 代码语句。
}

使用 while 循环
while 循环与 for 循环非常相似。其不同之处是 while 循环没有内置的计数器或更新表达式。如果已经有由变量赋值反映的变化条件,并且希望使用该条件来控制语句或语句块的循环执行,就可以使用while 循环。
var theMoments = "";
var theCount = 42; // 初始化计数器变量。
while (theCount >= 1) {
if (theCount > 1) {
theMoments = "Only " + theCount + " moments left!";
}
else {
theMoments = "Only one moment left!";
}
theCount--; // 更新计数器变量。
}
theMoments = "BLASTOFF!";


--------------------------------------------------------------------------------


注意 由于 while 循环没有显式的内置计数器变量,因此比其他类型更容易产生无限循环。此外,部分原因是不易发现循环条件是在何时何地被更新的,因此很容易编写了一个实际上从不更新条件的 while 循环。在编写 while 循环时应特别小心。



--------------------------------------------------------------------------------



使用 break 和 continue 语句
Microsoft JScript 提供了一个语句来停止执行循环。break 语句可以用来在某些(特别)条件被满足时停止执行循环。continue 语句可以用来立即跳至下一次循环,即跳过余下的代码块并更新计数器变量,如 for 或 for...in 循环一样。
var theComment = "";
var theRemainder = 0;
var theEscape = 3;
var checkMe = 27;
for (kcount = 1; kcount <= 10; kcount++)
{
theRemainder = checkMe % kcount;
if (theRemainder == theEscape)
{
break; // 第一次遇到 remainder 等于 escape 时就从循环退出。
}
theComment = checkMe + " divided by " + kcount + " leaves a remainder of " + theRemainder;
}

for (kcount = 1; kcount <= 10; kcount++)
{
theRemainder = checkMe % kcount;
if (theRemainder != theEscape)

{
continue; // 只选择那些等于 escape 的 remainders,忽略其它。
}
// 使用选中的 remainders 的 JScript 代码。
}

var theMoments = "";
var theCount = 42; // 初始化计数器。
while (theCount >= 1) {
// if (theCount < 10) { // 警告!
// 这里使用 continue 将导致一个无限循环!。
// continue;
// }
if (theCount > 1) {
theMoments = "Only " + theCount + " moments left!";
}
else {
theMoments = "Only one moment left!";
}
theCount--; // 更新计数器。
}
theCount = "BLASTOFF!";
上一篇JScript 的运算符
下一篇JScript 的函数
Javascript热门文章排行
网站赞助商
购买此位置

 

关于我们 | 网站地图 | 文档一览 | 友情链接| 联系我们

Copyright © 2003-2024 电脑爱好者 版权所有 备案号:鲁ICP备09059398号