有时我们需要根据不同条件执行不同的操作。
我们可以使用 if 语句和条件运算符 ?(也称为“问号”运算符)来实现。
“if” 语句if(...) 语句计算括号里的条件表达式,如果计算结果是 true,就会执行对应的代码块。
例如:
let year = prompt('In which year was ECMAScript-2015 specification published?', '');if (year == 2015) alert( 'You are right!' );在上面这个例子中,条件是一个简单的相等性检查(year == 2015),但它还可以更复杂。
如果有多个语句要执行,我们必须将要执行的代码块封装在大括号内:
if (year == 2015) { alert( "That's correct!" ); alert( "You're so smart!" );}建议每次使用 if 语句都用大括号 {} 来包装代码块,即使只有一条语句。这样可以提高代码可读性。
布尔转换if (…) 语句会计算圆括号内的表达式,并将计算结果转换为布尔型。
让我们回顾一下 类型转换 一章中的转换规则:
数字 0、空字符串 ""、null、undefined 和 NaN 都会被转换成 false。因为它们被称为“假值(falsy)”。其他值被转换为 true,所以它们被称为“真值(truthy)”。所以,下面这个条件下的代码永远不会执行:
if (0) { // 0 是假值(falsy) ...}……但下面的条件 —— 始终有效:
if (1) { // 1 是真值(truthy) ...}我们也可以将预先计算的布尔值传入 if 语句,像这样:
let cond = (year == 2015); // 相等运算符的结果是 true 或 falseif (cond) { ...} “else” 语句if 语句有时会包含一个可选的 “else” 块。如果判断条件不成立,就会执行它内部的代码。
例如:
let year = prompt('In which year was ECMAScript-2015 specification published?', '');if (year == 2015) { alert( 'You guessed it right!' );} else { alert( 'How can you be so wrong?' ); // 2015 以外的任何值} 多个条件:“else if”有时我们需要测试一个条件的几个变体。我们可以通过使用 else if 子句实现。
例如:
let year = prompt('In which year was ECMAScript-2015 specification published?', '');if (year < 2015) { alert( 'Too early...' );} else if (year > 2015) { alert( 'Too late' );} else { alert( 'Exactly!' );}在上面的代码中,JavaScript 先检查 year < 2015。如果条件不符合,就会转到下一个条件 year > 2015。如果这个条件也不符合,则会显示最后一个 alert。
可以有