Switch基本概念
- Switch和if一樣都屬于
選擇結(jié)構(gòu)
, 都會(huì)對(duì)給定的條件進(jìn)行判斷波附,再根據(jù)判斷結(jié)果來決定執(zhí)行哪一段代碼艺晴。
Switch基本格式
switch(條件表達(dá)式){
case 表達(dá)式:
語句1;
break;
case 表達(dá)式:
語句2;
break;
case 表達(dá)式n:
語句n;
break;
default:
語句n+1;
break;
}
- 其語義是:
- 計(jì)算
條件表達(dá)式
的值昼钻。 并逐個(gè)與case后面表達(dá)式的結(jié)果值比較 - 當(dāng)
條件表達(dá)式的值
與某個(gè)表達(dá)式的值
全等時(shí), 執(zhí)行其后的語句,并且不會(huì)再與其它c(diǎn)ase進(jìn)行比較 - 如
條件表達(dá)式的值
與所有case后的表達(dá)式
均不相同時(shí),則執(zhí)行default后的語句。
- 計(jì)算
- 示例
var num = 2;
switch(num){
case 1:
console.log("壹");
break;
case 2:
console.log("貳"); // 輸出貳
break;
case 3:
console.log("叁");
break;
default:
console.log("非法數(shù)字");
break;
}
Switch注意事項(xiàng)
- case全等于問題
- JavaScript中case判斷是否相等時(shí)是全等于(===),而不是等于(==),也就是說既會(huì)判斷類型是否相等又會(huì)判斷值是否相等
var str = "123"; switch (str){ case 123: console.log("123數(shù)字"); break; case "123": console.log("123字符串"); // 輸出123字符串 break; default: console.log("default"); break; }
- case后可以是常量也可以是變量
var num = 120; switch (120){ case num: // 這里可以是變量 console.log("120"); // 輸出120 break; case 110: // 這里可以是常量 console.log("110"); break; default: console.log("default"); break; }
- JavaScript中case判斷是否相等時(shí)是全等于(===),而不是等于(==),也就是說既會(huì)判斷類型是否相等又會(huì)判斷值是否相等
- 表達(dá)式判斷問題
- 判斷時(shí)會(huì)先計(jì)算表達(dá)式的值,再判斷
switch (120 + 3){ // 計(jì)算后為123 case 120: console.log("120"); break; case 3: console.log("3"); break; case 3 + 120: // 計(jì)算后為123 console.log("3 + 120"); // 輸出3 + 120 break; default: console.log("default"); break; }
- case的穿透問題
- switch里面的case只要匹配一次其它的都會(huì)失效封寞,包括default.
- 在case語句最后增加 break 語句,使每一次執(zhí)行之后均可跳出switch語句,從而避免輸出不應(yīng)有的結(jié)果
var num = 2; switch(num){ case 1: console.log("壹"); case 2: console.log("貳"); // 輸出貳 case 3: console.log("叁");// 輸出叁 default: console.log("非法數(shù)字"); // 輸出非法數(shù)字 }
- default的位置問題
- default的位置問題
- default語句可以寫在switch語句中的任意位置
if語句和switch語句選擇
-
分支比較多
且無法窮盡
時(shí)最好用 if, 其它情況可以按照個(gè)人習(xí)慣 - 如果數(shù)據(jù)量不是很大, 并且數(shù)據(jù)是固定的可以用Switch