JavaScript使用if () { … } else { … }来进行条件判断。例如,根据年龄显示不同内容,可以用if语句实现如下:
[JavaScript]
纯文本查看 复制代码
?
001 002 003 004 005 006 | var age = 20; if (age >= 18) { // 如果age >= 18为true,则执行if语句块 alert( 'adult' ); } else { // 否则执行else语句块 alert( 'teenager' ); } |
其中else语句是可选的。如果语句块只包含一条语句,那么可以省略{}:
[JavaScript]
纯文本查看 复制代码
?
001 002 003 004 005 | var age = 20; if (age >= 18) alert( 'adult' ); else alert( 'teenager' ); |
省略{}的危险之处在于,如果后来想添加一些语句,却忘了写{},就改变了if…else…的语义,例如:
[JavaScript]
纯文本查看 复制代码
?
001 002 003 004 005 006 | var age = 20; if (age >= 18) alert( 'adult' ); else console.log( 'age < 18' ); // 添加一行日志 alert( 'teenager' ); // <- 这行语句已经不在else的控制范围了 |
上述代码的else子句实际上只负责执行console.log(‘age < 18’);,原有的alert(‘teenager’);已经不属于if…else…的控制范围了,它每次都会执行。
多行条件判断
如果还要更细致地判断条件,可以使用多个if…else…的组合:
[JavaScript]
纯文本查看 复制代码
?
001 002 003 004 005 006 007 008 | var age = 3; if (age >= 18) { alert( 'adult' ); } else if (age >= 6) { alert( 'teenager' ); } else { alert( 'kid' ); } |
如果if的条件判断语句结果不是true或false怎么办?例如:
[JavaScript]
纯文本查看 复制代码
?
001 002 003 004 | var s = '123' ; if (s.length) { // 条件计算结果为3 // } |
JavaScript把null、undefined、0、NaN和空字符串”视为false,其他值一概视为true,因此上述代码条件判断的结果是true。