---
title: "IT课程 JavaScript基础 041_条件分支 if、else、switch"
date: 2024-11-14T17:08:49.000Z
tags: ["IT课程", "HTML课程", "CSS课程", "JavaScript课程", "Java课程", "计算机系统与网络", "JavaScript条件分支", "JavaScript条件分支语句", "条件分支语句", "条件分支", "JavaScript if", "JavaScript else", "JavaScript else if", "JavaScript 三元运算符", "JavaScript switch"]
categories: ["学习", "JavaScript基础"]
canonical: https://www.zhaojian.net/it-course-javascript-041/
author: 赵健
---

JavaScript 中的条件语句主要包括 `if`、`else if`、`else` 和 `switch`。
### `if` 语句

`if` 语句用于根据一个条件判断是否执行某段代码。当 `if(...)` 语句括号里的条件表达式为 `true`，则执行 `if` 后的 **一行** 语句。
如果希望控制多行代码，可以使用 `{}` 将语句括起来。建议每次使用 `if` 语句都用大括号 `{}` 来包装代码块，即使只有一条语句，这样可以提高代码可读性。
如果条件表达式为 `false` 则不执行。
如果 `if` 后的条件表达式不是布尔值，会先转换为布尔值然后再运算。数字 `0`、空字符串 `""`、`null`、`undefined` 和 `NaN` 都会被转换成 `false`。其它值被转换为 `true`。

示例：

```js
let age = 18;
if (age >= 18) console.log('成年人');
if (age >= 18) {
	console.log('成年人');
}
```

### `if-else` 语句

`if-else` 语句可根据不同条件执行不同的代码块，如果该表达式的值为 `true`，则执行 `if` 后面的代码块；否则执行 `else` 后面的代码块。

示例：

```js
let age = 25;
if (age >= 18) {
  console.log('成年人');
} else {
  console.log('未成年人');
}
```

### `else if` 语句

`else if` 语句是在 `if-else` 结构中使用的扩展，允许你添加多个条件进行判断。
`else if` 语句会自上而下依次对 `if` 后的条件表达式进行求值判断，直到出现 `true` 条件为止。当出现 `true` 条件时，后面的条件就不会再继续求值判断了，需要合理安设计条件的排列顺序或增加逻辑运算条件。

示例：

```js
let score = 95;
if (score >= 90) {
	console.log('优秀');
} else if (score >= 60) { //尝试把次条件排序到第一试试结果如何？
	console.log('及格');
} else {
	console.log('不及格');
}
```

### `switch` 语句

`switch` 语句可替代多个`if`判断，根据表达式的值进行多分支选择。
`switch` 语句在执行时，会依次将 `switch` 后的表达式和 `case` 后的表达式进行 **严格相等** 比较
如果比较结果为 `true`，`switch` 语句就执行相应 `case` 后的代码块，直到遇到最靠近的 `break` 语句（或者直到 `switch` 语句末尾）。
如果没有符合的 `case`，则执行 `default` 代码块（如果 `default` 存在）。

示例：

```js
let day = 7;
switch (day) {
	case 1:
	    console.log('星期一');
	    break;
	case 2:
	    console.log('星期二');
		break;
	case 6: //case 分组
	case 7: //共享同一段代码的几个 case 分支可以被分为一组
	    console.log('周末');
	    break;
	default:
	    console.log('其他');
}
```


### `break` 终止（结束、跳出）循环

`break` 用于终止（结束、跳出）当前的循环或 `switch` 语句，如果没有 `break`，则会继续执行后续 `case`（即发生“穿透”现象）。

示例：

```js
let day = 2;
switch (day) {
  case 1:
    console.log('星期一');
    break;
  case 2:
    console.log('星期二');
    // 没有 break，会继续执行下一个 case
  case 3:
    console.log('星期三');
    break;
  default:
    console.log('其他');
}
```