条件运算符:if 和 ‘?’
有时我们需要根据不同条件执行不同的操作。
我们可以使用 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 或 false
if (cond) {
…
}
复制代码"else" 语句
if 语句有时会包含一个可选的 “else” 块。如果判断条件不成立,就会执行它内部的代码。
例如:
let year = prompt(‘In which year was ECMAScript-2015 specification published?’, ‘’);
if (year == 2015) {
alert( ‘You guessed