2017-06-03 121 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'

我希望有帮助!