分析 Switch 相較于 if 的優點
1、switch 執行效率 高于 if 的執行效率
分析:
switch是在編譯階段將子函式的地址和判斷條件系結了,只要直接將a的直接映射到子函式地址去執行就可以了,
if處理起來首先要把a的值放到CPU的暫存器中,然后要把比較的值放到CPU的另一個暫存器中,然后做減法,然后根據計算結果跳轉到子函式去執行,這樣一來就要多出3步的操作了,如果邏輯判斷多的話,那么將會比switch多處許多倍的操作,盡管暫存器操作的速度很快,但是效率方面還是不如switch ;
2、代碼清晰簡單易讀;
如下例子很清晰看到 什么條件下可以執行哪個子函式
分析 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行下面我沒有添加關鍵字break; 這就導致這段代碼的行為邏輯與我的設計初衷不符了,
缺點二、語法比較死板
switch盡管對于break很寬容,但是對判斷條件很嚴苛,case后面只能跟常量
缺點三、需要子函式來處理分支
這個缺點跟缺點一有關,為了防止漏寫break
為什么要使用break來做一個判斷結束呢?
最初代碼中是沒有子函式的概念的,那時候都是用goto隨意跳轉的,你想去第10行代碼,很簡單goto 10就可以了,這種編程思維在C的早期階段還是一直受到影響的,因此早期的C也沒有子函式,都是一堆邏輯處理混亂在一起,goto滿天飛,所以那時候你沒有一個最強大腦是寫不了程式的,那為了告訴程式我這里條件判斷處理結束,就添加了break作為終止符號,
白茶清歡無別事,我在等風也等你,苦酒折柳今相離,無風無月也無你,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/555246.html
標籤:其他
下一篇:返回列表