switch語句與if語句的關係最為密切,也是其它程式語言中普遍使用的一種流程控制語句,但switch的匹配是全等模式,如果不注意這個細節則寫程式時往往會出錯。
代碼:
var n = '5'; switch(n){ case 5: alert('执行case分支'); break; default: alert('执行default分支'); }
結果:
可能很多人會誤以為以上程式會走case分支,結果卻走了default分支。難道它們兩個不相等嗎?我們使用if語句來看看。
代碼:
var n = '5'; if(n==5){ alert('真 分支'); }else{ alert('假 分支'); }
結果:
在if語句裡可以匹配,但為何在switch語句裡不能匹配呢?
這是因為在switch語句裡的case使用全等模式,也就等於if裡的使用三個等號類似。我們把case的程式碼改寫一下
代碼:
var n = '5'; switch(n){ case '5': // 把原来的 case 5 改写成 case '5' alert('执行case分支'); break; default: alert('执行default分支'); }
結果:
改寫了以後就能走case分支了,就像我們if裡使用三個全等號一樣
代碼:
var n = '5'; if(n===5){ alert('真 分支'); }else{ alert('假 分支'); }
結果:
因為使用全等,所以字串5不等於數字5,結果走了假分支。
由上述例子說明在 switch中使用的是全等匹配模式,特別是數字與字串匹配的時候需要注意的一個問題