【七】条件判断

JavaScript使用if() { ... } else { ... }来进行条件判断。例如,根据年龄显示不同内容,可以用if语句实现如下:

var age = 20;
if(age >= 18){  // 如果age >= 18 为true,则执行if语句块
    alert('adult');
}else {  // 否则执行else语句块
    alert('teenager');
}

其中else 语句是可选的。如果语句块只包含一条语句,那么可以省略{}:

var age = 20;
if (age >= 18)
    alert('adult');
else  
    alert('teenager');

省略{}的危险之处在于,如果后来想要添加一些语句,却忘了写{},就变成了if ... else ...的语义,例如:

var age = 20;
if (age >= 18 )
    alert('adult');
else  
    console.lg('age < 18'); // 添加一行日志
    alert('teenager'); // ←这行语句已经不在else的控制范围了

上述代码的else子句实际上只负责执行console.log('age < 18'); , 原有的alert('teenager'); 已经不属于if... else ...的控制范围了,它每次都会执行。
相反地,有{}的语句就不会出错:

var age = 20;
if(age >= 18){
    alert('adult');
} else {
    console.log('age < 18');
    alert('teenager');
}

这就是为什么我们建议永远都要写上{}。

</br>
<h3>多行条件判断</h3>
如果还要更细致地判断条件,可以使用多个if...else...的组合:

var age = 3;
if(age >= 18) {
    alert('adult');
} else if(age >= 6) {
    alert('teenager');
} else {
    alert('kid');
}

上述多个if ... else ...的组合实际上相等于两层if ... else ...:

var age = 3;
if (age >= 18) { 
    alert('adult');
} else {
    if (age >= 6) { 
        alert('teenager'); 
    } else { 
        alert('kid');
    }
}

但是我们通常把else if 连写在一起,来增加可读性。这里的else省略掉了{ }是没有问题的,因为它只包含一个if语句。注意最后一个单独的else 不要略掉{ }。
<u>请注意,if ... else ... 语句的执行特点是二选一,在多个if ... else ...语句中,如果某个条件成立,则后续就不要再继续判断了。</u>
</br>
<u>JavaScript把null、undefined、0、NaN和空字符串' '视为false,其他值一概视为true,如果if(s.length) ,s.length的结果是3,则判断的结果是true</u>。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容