来源:远方网络 | 2005-3-7 22:30:55 | (有1988人读过)
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!";
|