← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达
← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达

逻辑运算符 - 简化复杂条件判断

在编程中,我们经常需要同时检查多个条件。逻辑运算符让我们能够将多个条件组合在一起,避免复杂的嵌套 if 语句。

1. 与运算符 && - "而且"

嵌套条件的问题

先看一个常见的嵌套条件写法:

加载代码编辑器...

嵌套的问题:

  • 代码层级深,看起来复杂
  • 需要写很多重复的 if 和 else
  • 逻辑不够直观

&& 运算符的基本概念

&& 读作"与"或"而且",它的工作很简单:

  • 两边都是 boolean 值
  • 只有两边都是 true,结果才是 true
  • 任何一边是 false,结果就是 false

🎯 生活类比:双重验证

想象一下银行取钱:

  • 需要银行卡(第一个条件)
  • 需要密码(第二个条件)
  • 两者都有才能取到钱 → true && true = true
  • 缺少任何一样都取不到钱 → true && false = false

&& 运算符的工作原理

在处理变量之前,让我们先直接测试 && 运算符如何处理最基本的 true 和 false 值:

加载代码编辑器...

从布尔值到布尔变量:

还记得在变量赋值课程中我们学过的读取变量值的规则吗?

复习:如果变量不在赋值符号(=)的左边,那就是在读取变量的值

加载代码编辑器...

在这个例子中,当执行 hasMoney && isNewModel 时:

  • hasMoney 不在 = 左边 → 读取它的值 true
  • isNewModel 不在 = 左边 → 读取它的值 true
  • 实际执行的是 true && true

这就是为什么我们在实际代码中使用 hasMoney && isNewModel,它本质上就是对两个变量中存储的布尔值进行 && 运算。

用 && 简化嵌套条件

回到我们买手机的例子:

加载代码编辑器...

简化后的逻辑:

  • hasMoney && isNewModel 检查两个条件是否同时满足
  • 如果满足,就购买
  • 如果不满足,就不购买

重要提醒:简化不完全等价

注意:使用 && 简化后,失去了原来的详细判断:

加载代码编辑器...

什么时候用 && 简化?

  • ✅ 只关心"所有条件是否都满足",不需要区分具体问题
  • ✅ 代码简洁更重要时
  • ❌ 需要区分具体失败原因时

&& 运算符总结

条件A条件BA && B理解
truetruetrue两件事都满足
truefalsefalse只有A满足
falsetruefalse只有B满足
falsefalsefalse两件事都不满足

2. 或运算符 || - "或者"

嵌套条件的问题

先看一个需要判断"或者"关系的嵌套条件写法:

加载代码编辑器...

嵌套的逻辑:如果是晴天,可以出门;如果不是晴天但有雨伞,也可以出门。

嵌套的问题:

  • 代码层级深,看起来复杂
  • 需要写很多重复的 if 和 else
  • 逻辑不够直观

|| 运算符的基本概念

|| 读作"或"或者"或者",它的工作很简单:

  • 两边都是 boolean 值
  • 只要有一边是 true,结果就是 true
  • 两边都是 false,结果才是 false

🎯 生活类比:多种出门方式

想象一下去学校:

  • 可以步行(第一个条件)
  • 可以坐公交车(第二个条件)
  • 任何一种方式都能到学校 → true || false = true
  • 两种方式都不行就到不了学校 → false || false = false

|| 运算符的工作原理

同样,让我们先理解 || 运算符如何处理基本的布尔值,再看它如何处理变量:

加载代码编辑器...

从布尔值到布尔变量:

同样运用变量赋值课程中的读取变量值规则:

加载代码编辑器...

理解过程:当执行 isSunny || hasUmbrella 时,程序会:

  1. 读取 isSunny 的值 → true
  2. 读取 hasUmbrella 的值 → false
  3. 执行 true || false → true

用 || 简化嵌套条件

回到出门准备的例子:

加载代码编辑器...

简化后的逻辑:

  • isSunny || hasUmbrella 检查是否有任何一个出门条件
  • 如果有一个条件满足,就可以出门
  • 如果两个条件都不满足,就不能出门

重要提醒:简化不完全等价

注意:使用 || 简化后,同样失去了原来的详细判断:

加载代码编辑器...

什么时候用 || 简化?

  • ✅ 只关心"是否有任何条件满足",不需要区分具体方式
  • ✅ 代码简洁更重要时
  • ❌ 需要区分具体的成功方式时

|| 运算符总结

条件A条件BA || B理解
truetruetrue两种方式都可以
truefalsetrueA方式就够了
falsetruetrueB方式就够了
falsefalsefalse两种方式都不行

3. 非运算符 ! - "不是"

我们知道 if (isVictory === true) 可以简化为 if (isVictory),那么 if (isVictory === false) 如何简化呢?

! 运算符就是用来简化 === false 比较的:

加载代码编辑器...

! 运算符的基本概念

! 读作"非"或"不是",它的工作很简单:

  • 作用于单个 boolean 值
  • 把 true 变成 false
  • 把 false 变成 true

🎯 生活类比:开关切换

想象一下电灯开关:

  • 开(true)→ 按一下 → 关(false)
  • 关(false)→ 按一下 → 开(true)
  • ! 就是那个"切换"的按钮

! 运算符的工作原理

让我们先理解 ! 运算符如何处理基本的布尔值:

加载代码编辑器...

! 运算符:false 比较的简化方案

了解了 ! 运算符的基本功能后,现在我们来看看它如何解决 === false 的问题:

加载代码编辑器...

简化原理:通过看两种方式在 isVictory 为 true/false 情况下是否一样:

isVictory 的值isVictory === false!isVictory等价吗?
truefalsefalse✅ 等价
falsetruetrue✅ 等价

从表格可以看出:!isVictory 完全等价于 isVictory === false

这就是为什么可以用 ! 来简化 === false 比较的原因。

! 运算符的实际应用场景

1. 检查"没有"某样东西

加载代码编辑器...

2. 检查条件"不成立"

加载代码编辑器...

! 运算符总结

原值!原值理解
truefalse真的变成假的
falsetrue假的变成真的

4. 多个运算符的组合

三个 && 运算符的执行过程

当我们有多个条件需要同时满足时,就像数学中的加法可以连接多个数字一样,&& 也可以连接多个布尔值。

数学类比:连加法

加载代码编辑器...

逻辑运算符:连与运算

加载代码编辑器...

详细执行过程:以 true && true && false 为例

加载代码编辑器...

实际应用:游戏角色准备

让我们用一个游戏角色的例子来理解三个条件的组合:

加载代码编辑器...

多个 || 运算符的执行过程

同样,|| 也可以连接多个条件,只要有一个满足即可。

加载代码编辑器...

执行分析:

加载代码编辑器...

关键理解点

  1. 从左到右执行:多个相同运算符按照从左到右的顺序执行
  2. 逐步简化:每执行一次运算,表达式就会变得更简单

理解了多个运算符的组合执行过程后,我们就能处理更复杂的条件判断逻辑了!

4. 运算符优先级

优先级顺序

从高到低:

  1. ! (非) - 最高优先级
  2. && (与) - 中等优先级
  3. || (或) - 最低优先级

例子

加载代码编辑器...

最佳实践:多用括号

// ❌ 不推荐:依赖优先级,可读性差
if (hasKey && !isVictory || level >= 10) {
  // ...
}

// ✅ 推荐:使用括号,意图明确
if ((hasKey && !isVictory) || (level >= 10)) {
  // ...
}

5. 逻辑运算符的组合使用

逐步构建复杂条件

推荐做法:使用中间变量

加载代码编辑器...

进阶做法:使用括号

加载代码编辑器...

总结

今天我们学习了三种逻辑运算符,它们都能帮助我们简化条件判断:

三种逻辑运算符的功能

  1. && (与运算符):所有条件都为 true 时,结果才为 true

    • 用于"所有条件都要满足"的场景
    • 简化:if (a && b) 替代嵌套的 if (a) { if (b) { ... } }
  2. || (或运算符):只要有一个条件为 true,结果就为 true

    • 用于"只要有一个条件满足"的场景
    • 简化:if (a || b) 替代复杂的 if-else 嵌套
  3. ! (非运算符):将布尔值取反

    • 用于"检查条件不成立"的场景
    • 简化:if (!a) 替代 if (a === false)

重要使用原则

  • 简化但不完全等价:运算符简化后的代码会失去嵌套版本的详细判断能力
  • 选择合适的场景:当只需要知道"满足/不满足"时使用运算符,需要具体信息时保持嵌套
  • 运算符优先级:! > && > ||,建议使用括号明确顺序

编程技能提升

  • 代码简洁性:学会用运算符减少嵌套层级
  • 逻辑思维:理解不同运算符的语义差异
  • 可读性优化:选择最能表达意图的写法

掌握这三个逻辑运算符后,你就能根据不同的需求,选择最合适的方式来表达条件判断逻辑,写出既简洁又清晰的代码!

Previous lesson
Previous
条件语句进阶 - 复杂判断与嵌套结构
Next
循环语句 - 程序的重复机器
Next lesson