條件語法

條件語法

條件語法是在當指定的條件為 true 時,就執行一整組指令。JavaScript 支援兩種條件語法︰if...elseswitch

if...else 語法

如果邏輯條件為 true 時,就執行 if 語法裡的語句。如果條件為 false 的話,可以使用選用性的 else 子句來執行語句。if 語法如下︰

if (condition)
   statement_1
[else
   statement_2]

condition 可以是任何可求值為 true 或 false 的表達式。如果 condition 的求值為 true,就會執行 statement_1,否則執行 statement_2statement_1statement_2 可以是任何的語句,包括嵌套的 if 語法。

你也可以使用 else if 來組合語句,並依序測試各個條件,如下︰

if (condition)
   statement_1
[else if (condition_2)
   statement_2]
...
[else if (condition_n_1)
   statement_n_1]
[else
   statement_n]

要執行多個語句,就使用區塊語法({ ... })把語句群組化。一般來說,固定使用區塊語法是非常好的作法,尤其是當代碼內部還有嵌套的 if 語法時︰

if (condition) {
   statements_1
} else {
   statements_2
}

不要在條件表達式裡使用簡單的代入動作會比較明智,因為在快速瀏覽代碼時,代入和相等很容易彼此混淆。例如,不要使用如下代碼︰

if (x = y) {
   /* 做一些事 */
}

如果你需要在條件表達式中使用代入的話,常見的作法是在代入語句加上額外的括弧。例如︰

if ((x = y)) {
   /* 做一些事 */
}

不要把 Boolean 物件的 true、false 值和原始的布林值 truefalse 相混淆。任何值只要不是 undefinednull0NaN、空字串 ("")、物件,即使是含有 false 值的 Boolean 物件,傳給條件語法的求值結果也會是 true。例如︰

var b = new Boolean(false);
if (b) // 這個條件的求值結果為 true

範例
在以下的範例中,如果在 Text 物件裡的字元數目為 3,函數 checkData 就返回 true。否則,他會顯示警報並返回 false。

function checkData() {
   if (document.form1.threeChar.value.length == 3) {
      return true;
   } else {
      alert("Enter exactly three characters. " +
         document.form1.threeChar.value + " is not valid.");
      return false;
   }
}

switch 語法

switch 語法可讓程式對表達式求值,並試著以表達式的值來一一比對 case 標籤。如果發現比對符合,程式就會執行與之關聯的語句。switch 語法如下︰

switch (expression) {
   case label_1:
      statements_1
      [break;]
   case label_2:
      statements_2
      [break;]
   ...
   default:
      statements_def
      [break;]
}

程式首先從附有標籤的 case 子句找出能夠符合表達式的值的標籤,然後把控制權轉移到那個子句,並執行與之相關的語句。如果找不到相符的標籤,程式就會尋找選用性的 default 子句,如果找到的話,就把控制權轉移到那個子句,並執行與之相關的語句。如果找不到 default 子句,程式就會繼續執行 switch 語法後面的語句。根據慣例,default 語句一定是最後一個子句,但是並非只能這樣使用。

可用在每一個 case 子句的選用性 break 語法,可確實從 switch 裡已執行完且後面還有其他語句的符合語句中跳出。如果省略 break,程式就會繼續執行 switch 語法裡的下一個語法。

範例
在以下範例中,如果 fruittype 求值為 "Bananas",程式就會比對出 case "Bananas" 的值,並執行相聯的語句。如果遇到 break,程式就會終止 switch 並執行 switch 後面的語句。如果省略了 break,case "Cherries" 裡的語句也會被執行。

switch (fruittype) {
   case "Oranges":
      document.write("Oranges are $0.59 a pound.<br>");
      break;
   case "Apples":
      document.write("Apples are $0.32 a pound.<br>");
      break;
   case "Bananas":
      document.write("Bananas are $0.48 a pound.<br>");
      break;
   case "Cherries":
      document.write("Cherries are $3.00 a pound.<br>");
      break;
   case "Mangoes":
   case "Papayas":
      document.write("Mangoes and papayas are $2.79 a pound.<br>");
      break;
   default:
      document.write("Sorry, we are out of " + fruittype + ".<br>");
}
document.write("Is there anything else you'd like?<br>");

Document Tags and Contributors

Contributors to this page: happysadman
最近更新: happysadman,