switch與if的差異 if else 會把每個條件跟程式碼都檢視過一次,而 switch 只會去檢視 case 內的條件是否吻合,吻合才去執行程式碼區塊,相對來說,if else 會比較消耗效能,因if語法瀏覽器會都進行處理,而switch需對應後才處理,並且跑到指定需求後便停止。除了比if語法有較快的效率,使程式碼更好閱讀,同時效能較佳,
使用時機 如有確定特定狀態便推薦使用switch,ex:只有紅燈、黃燈、綠燈三種
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var light = yellow; switch(light){ // 如果是紅色就執行這區塊的程式碼 case 'red' : console.log('現在是' +light); break ; // 如果是黃色就執行這區塊的程式碼 case 'yellow' : console.log('現在是' +light); break ; // 如果上述都沒有符合的條件,就執行這區塊的程式碼 default: console.log('現在是綠燈' ); break ; } }
switch嚴謹模式 1 2 3 4 5 6 7 8 9 10 11 12 13 var n = '5' ; switch(n){ case 5: console.log('success' ); break ; default: console.log('fail' ); break ; } // console 輸出 fail }
看起來同樣的判斷卻在 switch 和 if else 上有著不一樣的結果,這是因為 switch 在判斷上採取嚴謹模式,亦即 ===(即型別也要相同),而在 if else 的判斷上並沒有採取這麼嚴謹的模式,需更改case’5’才能正確運行
1 2 3 4 5 6 7 8 9 10 11 12 13 switch(n){ case '5' : console.log('success' ); break ; default: console.log('fail' ); break ; } // console 輸出 success }