
簡單來說, switch 後頭接一小括弧,小括弧內為一常數運算式 (expression) ,計算出常數值若與其後 case 的位標 (label) 相符,就會執行該 case 的陳述。 case 的位標也可以是常數運算式,不過通常直接用常數值。
如下列程式,假設有一位元編碼儲存在整數陣列 (array) datab 之中,程式累計 0 與 1 各自出現的數目
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | function run() { var c = document.getElementById( "content" ); var n = document.createElement( "p" ); var datab = [1, 0 ,0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1]; var oneCount = 0; var zeroCount = 0; var i; for (i = 0; i < 16; i++ ) { switch (datab[i]) { case 0: zeroCount++; break ; case 1: oneCount++; break ; } } var message = "資料中有 " + zeroCount + " 個 0 , " + oneCount + " 個 1...." ; n.appendChild(document.createTextNode(message)); c.appendChild(n); } /* 《程式語言教學誌》的範例程式 檔名:run22.js 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 */ |
利用以下的 HTML 文件載入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < html > < head > < title >JavaScript Demo</ title > < script src = "run22.js" type = "text/javascript" ></ script > </ head > < body > < input id = "b" type = "button" value = "RUN" onclick = "run();" > < div id = "content" ></ div > </ body > </ html > <!-- 《程式語言教學誌》的範例程式 檔名:jsexample25.html 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 --> |
瀏覽器 (broswer) 開啟後執行,如下

第 9 行
10 | switch (datab[i]) { |
datab[i] 會取得該陣列的第 i 個元素值,此為常數運算式。
由於情況只有 0 與 1 ,因此上列程式只用 0 與 1 兩個位標。另外第 13 及第 17 行都有
13 | break ; |
17 | break ; |
關鍵字 break 是用來暫時中斷程式的執行,放在迴圈內遇到 break 就會跳出迴圈,而在 switch 裡頭的位標後面則是可以不讓程式繼續往下檢查其他的位標,因為檢查到相符的位標,程式即可暫停,若是沒有用 break ,程式會持續執行到右大括弧 } ,也就是 switch 陳述結束的地方,這樣容易增加額外的程式執行時間。
以下程式計算字串中母音字母出現的次數,若非母音字母則用 default 位標執行另外的計算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | function run() { var c = document.getElementById( "content" ); var n = document.createElement( "p" ); var saying = "Never put off till tomorrow what you can do today." ; var aV, eV, iV, oV, uV, other, i; aV = eV = iV = oV = uV = other = i = 0; while (saying.charAt(i) != '.' ) { switch (saying.charAt(i)) { case 'A' : case 'a' : aV++; break ; case 'E' : case 'e' : eV++; break ; case 'I' : case 'i' : iV++; break ; case 'O' : case 'o' : oV++; break ; case 'U' : case 'u' : uV++; break ; default : other++; break ; } i++; } var message = "a: " + aV + ", e: " + eV + ", i: " + iV + ", o: " + oV + ", u: " + uV + ", other: " + other; n.appendChild(document.createTextNode(message)); c.appendChild(n); } /* 《程式語言教學誌》的範例程式 檔名:run23.js 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 */ |
利用以下的 HTML 文件載入
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | < html > < head > < title >JavaScript Demo</ title > < script src = "run23.js" type = "text/javascript" ></ script > </ head > < body > < input id = "b" type = "button" value = "RUN" onclick = "run();" > < div id = "content" ></ div > </ body > </ html > <!-- 《程式語言教學誌》的範例程式 檔名:jsexample26.html 功能:示範 JavaScript 程式 作者:張凱慶 時間:西元 2010 年 11 月 --> |
瀏覽器開啟後執行,如下

default 位標下的 break 其實可有可無,但習慣上每個 case 都有給一個 break ,所以 default 後加上 break 只是相對看起來整齊而已。
各 case 的位標或 default 的出現順序並沒有強制規定,但習慣上, default 會放在最後面。
中英文術語對照 | |
---|---|
關鍵字 | keyword |
陳述 | statement |
運算式 | expression |
位標 | label |
陣列 | array |
沒有留言:
張貼留言