条件语句

更新:2007 年 11 月

默认情况下,JScript 代码中的指令是按顺序执行的。但是,根据特定的条件改变逻辑顺序并将控制转移到代码的非顺序部分可能很有用。控制结构根据条件语句测试是 true 还是 false,将程序控制转移到两个位置之一。可以将可强制为布尔值的任何表达式用作条件语句。下面给出了一些常用的条件语句。

相等和全等

条件语句中的相等运算符 (==) 检查传递给它的两个参数是否具有相同的值,如有必要,进行类型转换以进行比较。全等运算符 (===) 比较两个表达式的值和类型;仅当两个操作数的值和数据类型都相同时,才返回 true。注意,全等运算符不区分不同的数值数据类型。

以下 JScript 代码将相等运算符与使用它的 if 语句结合起来。有关更多信息,请参见控制结构

function is2000(x) : String {
   // Check if the value of x can be converted to 2000.
   if (x == 2000) {
      // Check is the value of x is strictly equal to 2000.
      if(x === 2000)
         print("The argument is number 2000.");
      else
         print("The argument can be converted to 2000.");
   } else {
      print("The argument is not 2000.");
   }
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);

下面是该代码的输出。

Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.

不相等和不全等

不相等运算符 (!=) 返回与相等运算符相反的结果。如果操作数具有相同的值,则不相等运算符返回 false;否则返回 true。相似地,不全等运算符 (!==) 返回与全等运算符相反的结果。

请看以下 JScript 代码示例,其中使用不相等运算符控制 while 循环。有关更多信息,请参见控制结构

var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) { 
   print(counter++);
}

下面是该代码的输出。

1
2
3
4

比较

如果一条数据具有特定的值,则可以使用相等或不相等运算符。但是,在某些情况下,代码可能需要检查某个值是否在特定范围内。在这些情况下,应该使用关系运算符:小于 (<)、大于 (>)、小于或等于 (<=) 以及大于或等于 (>=)。

if(tempInCelsius < 0)
   print("Water is frozen.")
else if(tempInCelsius > 100)
   print("Water is vapor.");
else
   print("Water is liquid.);

短路

如果要将几个条件放在一起测试,并且知道其中一个条件比其他条件更可能会通过或失败,则可以使用一种称为“短路计算”的功能加快脚本的执行速度,并避免出现可能产生错误的不利情况。当 JScript 计算某个逻辑表达式时,它只计算为得出结果而必须计算的子表达式。

逻辑“与”(&&) 运算符先计算传递给它的左侧表达式。如果该表达式转换为 false,则无论右侧表达式的值是多少,逻辑“与”运算符都不可能为 true。因此,不需要对右侧表达式进行计算。

例如,在表达式 ((x == 123) && (y == 42)) 中,JScript 先检查 x 是否为 123。如果不是,则不对 y 进行测试,JScript 返回值 false

同样,逻辑或运算符 (||) 先计算左侧的表达式,如果它转换为 true,则不再计算右侧的表达式。

当要测试的条件涉及执行函数调用或其他复杂表达式时,短路是很有用的。对于逻辑“或”运算符,若要最有效地运行脚本,先测试最可能为 true 的条件。对于逻辑“与”运算符,先测试最可能为 false 的条件。

以下是说明采用这种方式设计脚本的优点的一个例子,如果 runfirst() 的返回值转换为 false,就不会执行 runsecond()

if ((runfirst() == 0) || (runsecond() == 0)) {
   // some code
}

以下是说明采用这种方式设计脚本的优点的另一个例子,如果 runfirst() 的返回值转换为 false,就不会执行 runsecond()

if ((x == 0) && (y/x == 5)) {
   // some code
}

其他

任何可以转换为布尔值的表达式都可以用作条件语句。例如,可以使用类似下面的表达式:

if (x = y + z) // This may not do what you expect - see below!

注意,以下代码并“不”检查 x 是否与 y + z 相等,这是因为此语法只使用单个等号(赋值)。相反,以上代码将值 y + z 赋给变量 x,然后检查是否可以将整个表达式的结果(x 的值)转换为值 true。若要检查 x 是否等于 y + z,可使用以下代码。

if (x == y + z) // This is different from the code above!

请参见

概念

布尔型数据

其他资源

JScript 条件结构

JScript 数据类型

JScript 参考

运算符 (JScript)