首页 > 学院 > 开发设计 > 正文

控制程序的流程

2019-11-17 06:02:15
字体:
来源:转载
供稿:网友

Jscript 脚本中的语句一般是按照写的顺序来运行的。这种运行称为顺序运行,是程序流的默认方向。

与顺序运行不同,另一种运行将程序流转换到脚本的另外的部分。也就是,不按顺序运行下一条语句,而是运行另外的语句。

要使脚本可用,该控制的转换必须以逻辑方式执行。程序控制的转换是基于一个“决定”,这个“决定”结果是真或假(返回  Boolean 型 true false)。 创建一个表达式,然后测试其是否为真。主要有两种程序结构实现本功能。

第一种是选择结构。用来指明两种程序流方向,在程序中创建一个交叉点(像岔路)。在 Jscript 中有四种选择结构可用。

  • 单一选择结构(if),
  • 二路选择结构(if/else),
  • 内联三元运算符 ?:
  • 多路选择结构(switch)。

第二种类型的程序控制结构是循环结构。使用循环结构来指明当某些条件保持为真时要重复的动作。当控制语句的条件得到满足时(通常在某些迭代的特定数字后),控制跳过循环结构传递到下条语句。在 Jscript 中有四种循环结构可用。

  • 在循环的开头测试表达式(while),
  • 在循环的末尾测试表达式(do/while),
  • 对对象的每个属性都进行操作(for/in),
  • 计数器控制的循环(for)。

通过嵌套和堆栈选择、循环控制结构,可以创建相当复杂的脚本。

第三种形式的结构程序流由意外处理给出,本文档不作讨论。

使用条件语句

JScript 支持 ifif...else 条件语句。在 if 语句中将测试一个条件,假如该条件满足测试,执行相关的 JScript 编码。在 if...else 语句中,假如条件不满足测试,则将执行不同的代码。最简单的 if 语句格式可以在一行中写完,不过更常见的是多行的 ifif...else 语句。

下述示例演示了使用 ifif...else 语句的各种可能的语法。第一个示例演示了最简单的布尔测试。当(且仅当)括号之间的项的值为(或者可被强制转换为) true 时,if 后续的语句或语句块才会被执行。

// smash() 函数是在该代码的其他地方定义的。// 布尔测试,看 newShip 是否为 trueif (newShip)   smash(champagneBottle,bow); // 在本示例中,除非两个条件都为真,否则该测试将不会被满足。if (rind.color == "deep yellow " && rind.texture == "large and small wrinkles"){   theResponse = ("Is it a Crenshaw melon?");}// 在本示例中,只要任何一个条件为真,则测试即会满足。var theReaction = "";if ((dayOfWeek == "Saturday")  (dayOfWeek == "Sunday")){   theReaction = ("I'm off to the beach!");}else{   theReaction = ("Hi ho, hi ho, it's off to work I go!");}

条件运算符

JScript 也支持隐式的条件格式。该格式在要测试的条件后使用一个问号(而不是在条件前的 if )。它也指定两个可选项,一个在满足条件时使用,另一个在条件不满足时使用。这两个选择项之间必须用一个冒号隔开。

var hours = "";// 下面的代码指定 hours 是包含 theHour 的内容,// 还是包含 theHour - 12 的内容。hours += (theHour >= 12) ? " PM" : " AM";

假如要一起测试多个条件,并且知道某个条件比其他条件更可能满足或不满足测试,可以使用称为“短路计算”的特性来加速脚本的运行速度。当 JScript 计算逻辑表达式时,只计算要得到结果所需的子表达式。

例如,假如有一个“与”表达式,如 ((x == 123) && (y == 42)),Jscript 首先检查 x 是否为 123。假如不是,即使 y 等于 42,整个表达式的值也不可能为 true。因此,并不对 y 作测试,Jscript 返回 false 值。

类似地,假如多个条件中只要有一个为真(使用 运算符),则当任何一个条件满足该测试时测试则停止。假如要测试的条件包括函数调用或其他复合表达式,这种处理方式就有效。出于此种想法,写 OR 表达式时,先写最有可能为 true 的条件。写 AND 表达式时,先写最有可能为 false 的条件。

以这种方式设计脚本的好处的一个示例是:在下例中假如 runfirst() 返回 0 或 false, 则不会运行 runsecond()

if ((runfirst() == 0)  (runsecond() == 0)) {    // 若干代码。}

使用循环



上一篇:getUTCHours 方法

下一篇:创建自己的对象

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表