比较运算符与逻辑运算符 — JavaScript
这是什么以及为什么需要它?
想象一下,你是一个执行命令的机器人。为了做出决策,你需要能够比较事物并检查条件。例如:
- 比较:“你有100卢布吗?”(你将你的钱与数字100进行比较)。
- 逻辑:“你有100卢布 并且 你不饿吗?”(同时检查两个条件)。
在JavaScript中,比较运算符和逻辑运算符帮助计算机回答这类问题。结果总是 true(真)或 false(假)。这就像一个红绿灯:绿灯——可以走(true),红灯——停下(false)。
为什么需要它们?没有它们,程序会很无聊——它们只会按顺序执行命令。而有了它们,程序可以对不同的情况做出反应:例如,如果用户输入了正确的密码,就让他进入;如果没有,就显示错误。
在Python中,这些运算符的工作方式几乎相同,但JavaScript有其自己的技巧。我们将逐一分析它们。
带解释的代码示例
1. 基本比较运算符:>, <, >=, <=
最简单的——就像数学课上一样。比较数字:
// 示例 1:大于或小于?
let возраст = 12;
let можноВойти = возраст >= 12; // 如果年龄是12或更大,可以进入吗?
console.log(можноВойти); // 输出:true (因为 12 >= 12 — 真)
// 示例 2:与阈值比较
let температура = 30;
let жарко = температура > 25; // 大于25?
console.log(жарко); // true (30 > 25 — 真)
let холодно = температура < 10; // 小于10?
console.log(холодно); // false (30 不小于 10)
// 示例 3:字符串也可以比较!
console.log("арбуз" > "банан"); // false
// 为什么?字母按字母顺序比较:'а' (第1个字母) 小于 'б' (第2个字母)
// 在Python中也是如此,但那里的大小写敏感性不同
重要提示: 在JavaScript中,字符串按Unicode编码(如同在表格中)进行比较。“а”小于“я”,而“А”小于“а”。这就像字典:先是大写字母,然后是小写字母。
2. 相等运算符:== 和 ===
这里开始变得有趣!在JavaScript中,有两种方法可以检查值是否相等:
==— “非严格相等”(比较值,但可能会转换类型)===— “严格相等”(同时比较值和数据类型)
// 示例 4:数字和字符串的比较
let число = 5;
let строка = "5";
console.log(число == строка); // true — 因为 5 等于 5 (JavaScript 将字符串转换为数字)
console.log(число === строка); // false — 因为数字 (number) 不等于字符串 (string)!
// 在Python中没有这种情况:"5" == 5 会直接返回 False,没有转换
// 示例 5:与 true/false 比较
console.log(1 == true); // true — 因为 true 被转换为 1
console.log(1 === true); // false — 类型不同 (数字 vs 布尔值)
console.log(0 == false); // true
console.log(0 === false); // false
// 示例 6:空值
console.log(null == undefined); // true — JS 的特殊规则
console.log(null === undefined); // false — 类型不同
// 在Python中没有 undefined,只有 None,并且它除了自身之外不与任何东西相等
给新手的建议: 始终使用 ===(严格相等)以避免意外。这就像在数学中:5 和 “5” 是不同的东西,尽管看起来相似。
3. 逻辑运算符 &&(与)
“与”运算符 (AND) 仅当 两个 条件都为真时才返回 true。在生活中就像:“如果做完作业 并且 妈妈允许,我就去散步”。
// 示例 7:检查两个条件
let возраст = 14;
let естьБилет = true;
let можно_в_кино = (возраст >= 12) && (естьБилет === true);
console.log(можно_в_кино); // true — 年龄符合 并且 有票
// 如果年龄是10:
возраст = 10;
можно_в_кино = (возраст >= 12) && (естьБилет === true);
console.log(можно_в_кино); // false — 第一个条件为假,第二个为真,但“与”要求两者都为真
// 示例 8:复杂条件
let оценка = 4;
let поведение = "отлично";
let похвалят = (оценка === 5) && (поведение === "отлично");
console.log(похвалят); // false — 分数不是5,尽管行为是优秀的
// 在Python中写法相同:and
小技巧: JavaScript 是“懒惰的”——如果 && 中的第一个条件为假,它甚至不会检查第二个。这被称为“短路求值”。节省时间!
4. 逻辑运算符 ||(或)
“或”运算符 (OR) 如果 至少一个 条件为真,则返回 true。就像在生活中:“如果做完作业 或者 外面有太阳,我就去散步”。
// 示例 9:从两个选项中选择
let естьДеньги = false;
let естьПодарок = true;
let можно_купить_игру = естьДеньги || естьПодарок;
console.log(можно_купить_игру); // true — 没有钱,但有礼物(一个条件为真)
// 示例 10:检查年龄
let возрастПользователя = 17;
let входРазрешен = (возрастПользователя >= 18) || (возрастПользователя >= 16 && естьБилет);
// 如果年龄 >=18 或者 (年龄 >=16 并且有票)
console.log(входРазрешен); // false — 17 不小于 18,并且虽然 17>=16,但 естьБилет 未定义 (undefined — 这是 false)
// 示例 11:默认值
let имя = "";
let отображаемоеИмя = имя || "Гость";
console.log(отображаемоеИмя); // "Гость" — 因为空字符串被视为 false
// 在Python中:имя or "Гость" — 工作方式相同
技巧: || 也是“懒惰的”——如果第一个条件为真,则不检查第二个。这用于设置默认值。