2017-06-03 136 views
0

我不太明白else語句的含義。if else語句的用法是什麼?

爲什麼不只是繼續if語句以防一個錯誤?

它的工作原理是一樣的。

例如與如果只將工作同樣具有否則,如果:

function testSize(num) { 

    if (num < 5){ 

    return "Tiny"; 
    } 

    if (num < 10){ 

    return "small"; 
    } 


    return "Change Me"; 

} 


testSize(7); 
+1

讓代碼更具可讀性總是好事! –

+5

您的示例有所解釋,因爲它使用'return'來離開函數,所以在這個特定的場景中它確實沒什麼區別。假設它使用'echo'代替(通常是不好的選擇,但是舉例來說,假設它在檢查數字後可能不得不做其他事情,所以我們不能在這裏返回),並且用'3'調用的函數會輸出'TinysmallChange Me' ...這可能不是你想要的,因此你會使用else-if。 – CBroe

+0

這隻適用於每個分支都有'return'語句的情況。 – RobCo

回答

2

在您的實際代碼,你在相關的if語句的代碼指定return聲明。
假設您沒有指定return語句或今天假設您指定return語句,但明天您將其刪除以在該方法結束時執行常見的返回。

這段代碼測試,即使第一個是真正的每個條件:

if (num < 5){  
    // do something 
    } 

    if (num < 10){  
    // do something 
    } 

此代碼,如果第一個是真的不會測試下一個條件:

if (num < 5){  
    // do something 
    } 

    else if (num < 10){  
    // do something 
    } 

這兩個做法有兩個不同的含義。

當您有一系列if語句時,您預計可能有多個條件成立。
當您有一系列if-else-if語句時,您希望只有一個條件不成立。

在功能上使用第一種形式(一系列if)時,您希望不會超過一個條件爲真是誤導。
此外,如果代碼被修改,並且您添加的條件對於兩個if語句都是正確的,而您不想要這種情況,則會產生問題。

0

單向if聲明採取行動,如果指定的條件爲true.If條件爲假,什麼都不做。但是如果你想在條件錯誤時採取其他行動呢?您可以使用雙向if-else聲明。雙向if-else語句指定的操作根據條件是true還是false而有所不同。

0

如果所有if分支終止函數(例如,而是返回拋出一個異常值),你說的沒錯,你真的不需要else聲明(儘管一些編碼標準,可能會建議它)。

但是,如果if分支未終止該功能,則必須使用elseelse if子句來防止執行多個塊。假設,例如,您想將消息記錄到控制檯而不是返回:

if (num < 5) { 
    console.log("Tiny"); 
} else if (num < 10) { 
    console.log("small"); 
} else { 
    console.log("Change Me"); 
} 
1

您的代碼僅顯示您的信念。下面的例子會發生什麼?

function testSize(num) { 
    if (num < 5){ 
    x = 1; 
    } 
    if (num < 10){ 
    x = 2; 
    } 
    result = complex calculations; 
} 
function testSize2(num) { 
    if (num < 5){ 
    x = 1; 
    } else if (num < 10){ 
    x = 2; 
    } 
    return x * 2; 
} 
testSize(4); // result is 4 
testSize2(4); // result is 2 

X也可以參與更多的計算

0
if(condition) {...} 
if(condition) {...} 
if(condition) {...} 

在上面的代碼中,即使第一或第二條件爲真,第三個條件必須進行檢查。

if(condition) {} 
else if(condition){} 
else if(condition){} 

這裏,如果第一個條件爲真,則不檢查下兩個條件。所以,它節省了時間,邏輯上更具可讀性。

0

那麼,有來自這兩statement.Consider後續樣品

if(a > 0) { 
... 
} 
if(a == 0) { 
... 
} 
if(a < 0) { 
... 
} 

if(a > 0) { 
    ... 
} 
else if(a == 0) { 
    ... 
} 
else if(a < 0) { 
    ... 
} 

一個爲零最後別人有點不同,如果語句不會如果需要第三次比較則執行。如果a等於10,否則如果可能是e執行一次,而如果是第三。從這個否則,如果語句可以少執行,讓你的程序有點快。

0

否則,如果應當有多個條件,只希望要執行其中的一個,例如用於:

if(num<3){ console.log('less than 3') } 
else if(num<2){ console.log('less than 2') 

如果使用多臺,如果使用else語句代替if ,如果num = 1,這兩個條件都是正確的,因此它將打印兩個語句。

多,當你想運行所有這些如果,其條件爲真,語句中的代碼如果語句使用。

在你的情況下,它沒有區別,因爲函數將停止並返回它遇到的第一個返回語句。但是,假設塊的順序是互換的,那麼即使num =(小於5的任何東西),你的函數也不會返回'tiny'

我希望有幫助!