條件陳述式

關於 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

比較

等號比較運算子和不等比較運算子對有特別值的資料而言十分有用, 但是,有些情況下程式碼必須檢查值是否介於特別範圍內。 如果是這種情況,則您可以使用關係 (Relational) 運算子、小於 (<)、大於 (>)、小於或等於 (<=),以及大於或等於 (>=)。

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

最少運算

如果要同時測試幾項條件,而且您知道哪一項條件可能比其他條件更易通過或失敗,就可以使用一種叫作最少運算 (Short Circuit) 評估的功能,加速指令碼的執行,並避免可能造成錯誤的副作用。 當 JScript 評估邏輯運算式時,會依取得結果所需,決定其要評估多少子運算式。

邏輯 AND (&&) 運算子會先評估傳給它的左邊運算式。 如果運算式轉換成 false,則不論右邊運算式的值為何,邏輯 AND 運算子的結果不可為 true。 因此,不會評估右邊的運算式。

例如,在 ((x == 123) && (y == 42)) 運算式中,JScript 會先檢查是否 x 為 123。 如果不是,則永遠不會測試 y 而 JScript 會傳回 false 的值。

同樣地,邏輯 OR 運算子 (||) 會先評估左邊的運算式,如果轉換為 true,則不會評估右邊的運算式。

如果要測試的條件牽涉到函式呼叫的執行或其他複雜的運算式,最少運算這個方法就十分有效。 如果要讓指令碼執行地更有效率,使用邏輯 OR 運算子時,先設定最有可能為 true 的條件。 至於邏輯 AND 運算子,則是先設定最有可能為 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!

請參閱

概念

Boolean 資料

其他資源

JScript 條件式結構

JScript 資料型別

JScript 參考

運算子 (Visual Studio - JScript)