type
status
date
slug
summary
tags
category
icon
password
上次编辑时间
Jul 2, 2025 06:07 AM
comment
AI 总结
有时我们需要根据不同条件执行不同的操作。
我们可以使用
if
语句和条件运算符 ?
(也称为“问号”运算符)来实现。“if” 语句
if(...)
语句计算括号里的条件表达式,如果计算结果是 true
,就会执行对应的代码块。例如:
在上面这个例子中,条件是一个简单的相等性检查(
year == 2015
),但它还可以更复杂。如果有多个语句要执行,我们必须将要执行的代码块封装在大括号内:
建议每次使用 if 语句都用大括号
{}
来包装代码块,即使只有一条语句。这样可以提高代码可读性。布尔转换
if (…)
语句会计算圆括号内的表达式,并将计算结果转换为布尔型。让我们回顾一下 类型转换 一章中的转换规则:
- 数字
0
、空字符串""
、null
、undefined
和NaN
都会被转换成false
。因为它们被称为“假值(falsy)”。
- 其他值被转换为
true
,所以它们被称为“真值(truthy)”。
所以,下面这个条件下的代码永远不会执行:
……但下面的条件 —— 始终有效:
我们也可以将预先计算的布尔值传入
if
语句,像这样:“else” 语句
if
语句有时会包含一个可选的 “else” 块。如果判断条件不成立,就会执行它内部的代码。例如:
多个条件:“else if”
有时我们需要测试一个条件的几个变体。我们可以通过使用
else if
子句实现。例如:
在上面的代码中,JavaScript 先检查
year < 2015
。如果条件不符合,就会转到下一个条件 year > 2015
。如果这个条件也不符合,则会显示最后一个 alert
。可以有更多的
else if
块。结尾的 else
是可选的。条件运算符 ‘?’
有时我们需要根据一个条件去赋值一个变量。
如下所示:
所谓的“条件”或“问号”运算符让我们可以更简短地达到目的。
这个运算符通过问号
?
表示。有时它被称为三元运算符,被称为“三元”是因为该运算符中有三个操作数。实际上它是 JavaScript 中唯一一个有这么多操作数的运算符。语法:
计算条件结果,如果结果为真,则返回
value1
,否则返回 value2
。例如:
技术上讲,我们可以省略
age > 18
外面的括号。问号运算符的优先级较低,所以它会在比较运算符 >
后执行。下面这个示例会执行和前面那个示例相同的操作:
但括号可以使代码可读性更强,所以我们建议使用它们。
在上面的例子中,你可以不使用问号运算符,因为比较本身就返回
true/false
:多个 ‘?’
使用一系列问号
?
运算符可以返回一个取决于多个条件的值。例如:
可能很难一下子看出发生了什么。但经过仔细观察,我们可以看到它只是一个普通的检查序列。
- 第一个问号检查
age < 3
。
- 如果为真 — 返回
'Hi, baby!'
。否则,会继续执行冒号":"
后的表达式,检查age < 18
。
- 如果为真 — 返回
'Hello!'
。否则,会继续执行下一个冒号":"
后的表达式,检查age < 100
。
- 如果为真 — 返回
'Greetings!'
。否则,会继续执行最后一个冒号":"
后面的表达式,返回'What an unusual age!'
。
这是使用
if..else
实现上面的逻辑的写法:‘?’ 的非常规使用
有时可以使用问号
?
来代替 if
语句:根据条件
company =='Netscape'
,要么执行 ?
后面的第一个表达式并显示对应内容,要么执行第二个表达式并显示对应内容。在这里我们不是把结果赋值给变量。而是根据条件执行不同的代码。
不建议这样使用问号运算符。
这种写法比
if
语句更短,对一些程序员很有吸引力。但它的可读性差。下面是使用
if
语句实现相同功能的代码,进行下比较:因为我们的眼睛垂直扫描代码。所以,跨越几行的代码块比长而水平的代码更易于理解。
问号
?
的作用是根据条件返回其中一个值。请正确使用它。当需要执行不同的代码分支时,请使用 if
。