javascript switch 語句
switch 語句用于基于不同條件執(zhí)行不同動(dòng)作。
1. javascript switch 語句
請(qǐng)使用 switch 語句來選擇多個(gè)需被執(zhí)行的代碼塊之一。
語法
switch(表達(dá)式) { case n: 代碼塊 break; case n: 代碼塊 break; default: 默認(rèn)代碼塊 }
代碼解釋:
- 計(jì)算一次 switch 表達(dá)式
- 把表達(dá)式的值與每個(gè) case 的值進(jìn)行對(duì)比
- 如果存在匹配,則執(zhí)行關(guān)聯(lián)代碼
范例
getday() 方法返回 0 至 6 之間的周名數(shù)字(weekday number)。
(sunday=0, monday=1, tuesday=2 ..)
本例使用周名數(shù)字來計(jì)算周的名稱:
switch (new date().getday()) { case 0: day = "星期天"; break; case 1: day = "星期一"; break; case 2: day = "星期二"; break; case 3: day = "星期三"; break; case 4: day = "星期四"; break; case 5: day = "星期五"; break; case 6: day = "星期六"; }
結(jié)果將是:
var day; switch (new date().getday()) { case 0: day = "星期天"; break; case 1: day = "星期一"; break; case 2: day = "星期二"; break; case 3: day = "星期三"; break; case 4: day = "星期四"; break; case 5: day = "星期五"; break; case 6: day = "星期六"; } document.getelementbyid("demo1").innerhtml = "今天是" + day;
2. break 關(guān)鍵詞
如果 javascript 遇到 break 關(guān)鍵詞,它會(huì)跳出 switch 代碼塊。
此舉將停止代碼塊中更多代碼的執(zhí)行以及 case 測(cè)試。
如果找到匹配,并完成任務(wù),則隨機(jī)中斷執(zhí)行(break)。無需更多測(cè)試。
break 能夠節(jié)省大量執(zhí)行時(shí)間,因?yàn)樗鼤?huì)“忽略” switch 代碼塊中的其他代碼的執(zhí)行。
不必中斷 switch 代碼塊中的最后一個(gè) case。代碼塊在此處會(huì)自然結(jié)束。
3. default 關(guān)鍵詞
default 關(guān)鍵詞規(guī)定不存在 case 匹配時(shí)所運(yùn)行的代碼:
范例
getday() 方法返回 0 至 6 的數(shù)字周名。
如果今日既不是周六(6)也不是周日(0),則輸出一段默認(rèn)消息:
switch (new date().getday()) { case 6: text = "今天是周六"; break; case 0: text = "今天是周日"; break; default: text = "期待周末~"; }
text 的結(jié)果是:
switch (new date().getday()) { case 6: text = "今天是周六"; break; case 0: text = "今天是周日"; break; default: text = "期待周末~"; } document.getelementbyid("demo2").innerhtml = text;
默認(rèn)的 case 不必是 switch 代碼塊中最后一個(gè) case:
范例
switch (new date().getday()) { default: text = "期待周末!"; break; case 6: text = "今天是周六"; break; case 0: text = "今天是周日"; }
如果 default 不是 switch 代碼塊中最后一個(gè) case,請(qǐng)記得用 break 結(jié)束默認(rèn) case。
4. 常見的代碼塊
有時(shí)您會(huì)需要不同的 case 來使用相同的代碼。
在本例中,case 4 和 5 分享相同的代碼塊,而 0 和 6 分享另一段代碼塊:
范例
switch (new date().getday()) { case 4: case 5: text = "周末快到了:)"; break; case 0: case 6: text = "今天是周末~"; break; default: text = "期待周末!"; }
5. switching 的細(xì)節(jié)
如果多種 case 匹配一個(gè) case 值,則選擇第一個(gè) case。
如果未找到匹配的 case,程序?qū)⒗^續(xù)使用默認(rèn) label。
如果未找到默認(rèn) label,程序?qū)⒗^續(xù) switch 后的語句。
6. 嚴(yán)格的比較
switch case 使用嚴(yán)格比較(===)。
值必須與要匹配的類型相同。
只有操作數(shù)屬于同一類型時(shí),嚴(yán)格比較才能為 true。
在這個(gè)例子中,x 將不匹配:
范例
var x = "0"; switch (x) { case 0: text = "off"; break; case 1: text = "on"; break; default: text = "no value found"; }