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)
相关推荐
Είναι η κοπέλα16 小时前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
光影少年16 小时前
如果 React 组件的属性没有传值,它的默认值是什么?
前端·javascript·react.js
大草原的小灰灰16 小时前
Python面向对象编程
开发语言·python
知识分享小能手16 小时前
C学习教程,从入门到精通,C语言概述 —— 知识点详解(1)
c语言·开发语言·学习
Chen_harmony17 小时前
一、C++入门基础
开发语言·c++
学逆向的17 小时前
远程线程注入
开发语言·jvm·网络安全·win32
阡陌数智17 小时前
RAG 系统的召回退化:向量库、分块、重排全链路问题排查与优化实践
开发语言·人工智能·语言模型·自然语言处理·推荐算法
geovindu17 小时前
rust: Flyweight Pattern
开发语言·后端·设计模式·rust·享元模式·结构型模式
Helix25017 小时前
2026编程入门指南:零基础如何科学选择第一门编程语言?
java·c语言·javascript·零基础·编程语言·python入门·编程就业
Escalating_xu18 小时前
【C 语言】字符函数和字符串函数:从 ctype 到 strtok、strerror 全面解析
java·c语言·开发语言