分析 Switch 相較于 if 的優(yōu)點?
1、switch 執(zhí)行效率? 高于? if 的執(zhí)行效率
分析:
switch是在編譯階段將子函數(shù)的地址和判斷條件綁定了,只要直接將a的直接映射到子函數(shù)地址去執(zhí)行就可以了,
if處理起來首先要把a(bǔ)的值放到CPU的寄存器中,然后要把比較的值放到CPU的另一個寄存器中,然后做減法,然后根據(jù)計算結(jié)果跳轉(zhuǎn)到子函數(shù)去執(zhí)行,這樣一來就要多出3步的操作了,如果邏輯判斷多的話,那么將會比switch多處許多倍的操作,盡管寄存器操作的速度很快,但是效率方面還是不如switch ;
?2、代碼清晰簡單易讀;
如下例子很清晰看到 什么條件下可以執(zhí)行哪個子函數(shù)
分析 Switch 相較于 if 的缺點
1、閱讀一下代碼快速尋找到問題
let a = 0; switch(a){ case 0: console.log("let is 0 ") break; case 1: console.log("let is 1 ") case 2: console.log("let is 2 ") }
缺點一、語法正確,邏輯錯誤
在第8行和第10行下面我沒有添加關(guān)鍵字break; 這就導(dǎo)致這段代碼的行為邏輯與我的設(shè)計初衷不符了。
?缺點二、語法比較死板
switch盡管對于break很寬容,但是對判斷條件很嚴(yán)苛,case后面只能跟常量
缺點三、需要子函數(shù)來處理分支
這個缺點跟缺點一有關(guān),為了防止漏寫break
?文章來源地址http://www.zghlxwxcb.cn/news/detail-485316.html
為什么要使用break來做一個判斷結(jié)束呢?
最初代碼中是沒有子函數(shù)的概念的,那時候都是用goto隨意跳轉(zhuǎn)的,你想去第10行代碼,很簡單goto 10就可以了。這種編程思維在C的早期階段還是一直受到影響的,因此早期的C也沒有子函數(shù),都是一堆邏輯處理混亂在一起,goto滿天飛,所以那時候你沒有一個最強(qiáng)大腦是寫不了程序的。那為了告訴程序我這里條件判斷處理結(jié)束,就添加了break作為終止符號。
?文章來源:http://www.zghlxwxcb.cn/news/detail-485316.html
?
到了這里,關(guān)于淺析switch和if(開發(fā)中這兩者的優(yōu)缺點;分析出優(yōu)缺點在使用就能更確定自己需要使用哪個函數(shù)了)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!