JavaScript 的控制语句介绍

文章目录

  • 一、条件分支语句(决策)
    • [1. if...else if...else(最常用)](#1. if...else if...else(最常用))
    • [2. switch...case(多值匹配)](#2. switch...case(多值匹配))
    • [3. 三元运算符(? :)](#3. 三元运算符(? :))
  • 二、循环语句(迭代)
    • [1. for 循环(计数循环)](#1. for 循环(计数循环))
    • [2. while 循环(条件前置)](#2. while 循环(条件前置))
    • [3. do...while 循环(条件后置)](#3. do...while 循环(条件后置))
    • [4. for...in(遍历对象的键)](#4. for...in(遍历对象的键))
    • [5. for...of(遍历可迭代对象的值)](#5. for...of(遍历可迭代对象的值))
  • 三、跳转与异常处理语句
    • [1. break 和 continue(循环控制)](#1. break 和 continue(循环控制))
    • [2. return(函数终止)](#2. return(函数终止))
    • [3. try...catch...finally(异常捕获)](#3. try...catch...finally(异常捕获))
  • 四、补充:空值合并与可选链(现代控制糖)

JavaScript 的控制语句主要分为三大类:条件分支语句(选择执行)、循环语句(重复执行)和跳转/异常处理语句(改变执行流)。

一、条件分支语句(决策)

根据条件表达式的真假,决定执行哪一段代码。

1. if...else if...else(最常用)

适用于复杂的区间判断或多条件组合。

bash 复制代码
let score = 85;
if (score >= 90) {
    console.log('优秀');
} else if (score >= 60) {
    console.log('及格'); // 输出此条
} else {
    console.log('不及格');
}

2. switch...case(多值匹配)

适用于变量值严格等于(===)某个固定值的场景。注意:每个 case 后必须加 break,否则会"穿透"继续执行。

bash 复制代码
let fruit = 'apple';
switch (fruit) {
    case 'banana':
        console.log('香蕉');
        break;
    case 'apple':
        console.log('苹果'); // 输出此条
        break;
    default:
        console.log('未知水果');
}

3. 三元运算符(? :)

简化的条件赋值,适合单行逻辑。

bash 复制代码
let age = 20;
let type = age >= 18 ? '成年' : '未成年'; // type = '成年'

二、循环语句(迭代)

重复执行某段代码,直到条件为 false。

1. for 循环(计数循环)

最经典的循环,适合已知循环次数。

bash 复制代码
for (let i = 0; i < 5; i++) {
    console.log(i); // 输出 0, 1, 2, 3, 4
}

2. while 循环(条件前置)

先判断条件,再执行,如果条件一开始为假,则一次都不执行。

bash 复制代码
let n = 3;
while (n > 0) {
    console.log(n); // 输出 3, 2, 1
    n--;
}

3. do...while 循环(条件后置)

bash 复制代码
let x = 0;
do {
    console.log(x); // 输出 0(哪怕 x=0 也会执行这一次)
    x++;
} while (x < 0);

4. for...in(遍历对象的键)

遍历对象可枚举的属性名(不建议用于遍历数组,会遍历到原型链上的属性)。

bash 复制代码
let obj = { a: 1, b: 2 };
for (let key in obj) {
    console.log(key, obj[key]); // 输出 a 1, b 2
}

5. for...of(遍历可迭代对象的值)

ES6 新增,专门用于遍历数组、字符串、Set、Map 等,直接获取值(推荐用于数组)。

bash 复制代码
let arr = [10, 20, 30];
for (let value of arr) {
    console.log(value); // 输出 10, 20, 30
}

三、跳转与异常处理语句

1. break 和 continue(循环控制)

break:立即终止整个循环(跳出循环体)。

continue:跳过本次循环,立即进入下一次迭代。

bash 复制代码
for (let i = 0; i < 5; i++) {
    if (i === 2) continue; // i=2 时不执行下面,直接 i++
    if (i === 4) break;    // i=4 时彻底停止循环
    console.log(i);        // 输出 0, 1, 3
}

2. return(函数终止)

不仅仅用于返回值,它还会立即终止当前函数的执行,后续代码不再运行。

bash 复制代码
function test() {
    return; // 函数在这里结束
    console.log('这行永远不会执行');
}

3. try...catch...finally(异常捕获)

用于捕获代码运行时的错误,防止程序崩溃。finally 无论是否发生错误都会执行。

bash 复制代码
try {
    let data = JSON.parse('无效的JSON'); // 这里会抛错
    console.log(data);
} catch (error) {
    console.log('捕获到错误:', error.message);
} finally {
    console.log('清理资源...'); // 无论成功失败都会执行
}

四、补充:空值合并与可选链(现代控制糖)

虽然不算是传统的"语句",但在写条件判断时极其常用:

?.(可选链):判断前面的值是否存在,避免报错 Cannot read properties of undefined。

bash 复制代码
let user = {};
console.log(user?.address?.city); // 输出 undefined(不报错)

??(空值合并):只有当左侧是 null 或 undefined 时,才返回右侧的值(区别于 || 会把 0 或 '' 也视为假)。

bash 复制代码
let count = 0;
console.log(count || 10); // 输出 10(因为 0 是假值)
console.log(count ?? 10); // 输出 0(因为 0 不是 null/undefined)
相关推荐
微学AI4 小时前
一根针指向所有方向:挂谷猜想对 LLM Agent 技能-记忆架构的启示
开发语言·人工智能·架构·挂谷猜想
豆瓣鸡4 小时前
算法日记 - Day3
java·开发语言·算法
夏殇之殁5 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
韭菜炒鸡肝天5 小时前
VTK开发笔记(一):VTK介绍,Qt..+VSx+VTK.编译
开发语言·笔记·qt
Aaron - Wistron6 小时前
Web API C# (Furion版)带 单元测试
开发语言·后端·c#
新中地GIS开发老师6 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
丙氨酸長鏈6 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
Dxy12393102166 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
0566467 小时前
Python康复训练——常用标准库
开发语言·python·学习
骊城英雄7 小时前
基于C#+avalonia ui实现的跨平台点胶机灌胶监控控制上位机软件
开发语言·ui·c#