if...else
如果指定的条件为真,则if...else
语句执行一个语句。如果条件为假,则将执行可选else
子句中的另一个语句。
试一试
语法
描述
可以嵌套多个if...else
语句以创建else if
子句。请注意,JavaScript 中没有elseif
(一个单词)关键字。
js
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
// …
else
statementN
要了解其工作原理,以下是如何在正确缩进的情况下显示:
js
if (condition1)
statement1
else
if (condition2)
statement2
else
if (condition3)
statement3
// …
要在子句中执行多个语句,请使用块语句({ /* ... */ }
)对这些语句进行分组。
js
if (condition) {
statements1
} else {
statements2
}
不使用块可能会导致混淆的行为,尤其是在代码手动格式化的情况下。例如
js
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
这段代码看起来很无辜——但是,执行checkValue(1, 3)
将记录“a 不等于 1”。这是因为在悬空 else 的情况下,else
子句将连接到最接近的if
子句。因此,上面的代码,使用正确的缩进,将如下所示:
js
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
通常,最好始终使用块语句,尤其是在涉及嵌套if
语句的代码中。
js
function checkValue(a, b) {
if (a === 1) {
if (b === 2) {
console.log("a is 1 and b is 2");
}
} else {
console.log("a is not 1");
}
}
不要将原始布尔值true
和false
与Boolean
对象的真假性混淆。任何不是false
、undefined
、null
、0
、-0
、NaN
或空字符串(""
)的值,以及任何对象(包括值为false
的布尔对象)在用作条件时都被认为是真。例如
js
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // "b is truthy"
}
示例
使用 if...else
js
if (cipherChar === fromChar) {
result += toChar;
x++;
} else {
result += clearChar;
}
使用 else if
请注意,JavaScript 中没有elseif
语法。但是,您可以在else
和if
之间使用空格来编写它
js
if (x > 50) {
/* do something */
} else if (x > 5) {
/* do something */
} else {
/* do something */
}
使用赋值作为条件
规范
规范 |
---|
ECMAScript 语言规范 # sec-if-statement |
浏览器兼容性
BCD 表仅在浏览器中加载