正在加载...

比较

赋值把带名字的盒子装满了。现在问盒子里是什么:是同一个吗?更大吗?够不够?答案永远是是或否——true 或 false。这些问题就是比较运算符。以后会放进条件里;这里先认符号,并相信它交回来的布尔值。

什么是比较?

比较拿两个操作数,返回一个 boolean。它不会把新数字存进左边的名字(那是 = 的事)。5 === 5 之后结果是 true。5 === "5" 之后是 false,因为类型不同。你可以打印这个布尔值、放进变量,或写到页面上。

运算符一览

📊 日常比较运算符

运算符 在问什么 典型结果
=== 值和类型都相同? 5 === 5 → true
!== 值或类型不同? 5 !== "5" → true
< 严格更小? 3 < 10 → true
> 严格更大? 3 > 10 → false
<= 小于或等于? 10 <= 10 → true
>= 大于或等于? 9 >= 10 → false

把这张表放在手边。== 和 != 也存在,但本课把它们当新手陷阱——比较前可能先转换类型。等以后专门讲强制转换之前,先用 === / !==。

严格相等与不相等

javascript
console.log(7 === 7);
console.log(7 === "7");
console.log(7 !== 7);
console.log(7 !== "7");
let n = 7;
console.log(n === 7);

=== 同时看值和类型

三个等号是新手默认。两边必须值和类型都对上。数字 7 不是文本 "7"。

控制台依次打印 true、false、false、true、true。最后一行说明:存好的数字仍会与字面量 7 做严格比较。!== 是反问:「它们不是同一个吗?」——这里 7 !== "7" 为 true,因为类型不同。

新手为何先跳过 ==

两个等号可能先把字符串变成数字(或反过来),再下结论。看起来省事,直到把 bug 藏起来。

宽松相等对比严格

javascript
console.log(7 == "7");
console.log(7 === "7");
console.log(0 == false);
console.log(0 === false);
console.log("" == 0);
console.log("" === 0);

7 == "7" 会变成 true,尽管一边是文本。7 === "7" 仍是 false。0 == false 和 "" == 0 也会是 true——吵闹的意外。严格检查更老实:数字、boolean、空字符串是不同的东西。本课优先 ===。

给数字排序

< > <= >= 把数字排成顺序。对 <= 和 >= 来说,相等也算是。

数字排序

javascript
console.log(3 < 10);
console.log(3 > 10);
console.log(10 <= 10);
console.log(9 >= 10);
let score = 80;
console.log(score >= 60);

得到 true、false、true、false、true。最后一行是日常问题:「分数够不够?」若要给答案起名,把 boolean 存下来。

保存布尔标志

javascript
let score = 80;
let pass = score >= 60;
console.log(pass);
let age = 17;
let adult = age >= 18;
console.log(adult);

pass 为 true(80 过了 60)。adult 为 false(17 够不到 18)。比较已经给出布尔值——你只是给它起了名字。

字符串顺序

javascript
console.log("A" < "B");
console.log("B" < "A");
console.log("apple" === "apple");
console.log("Apple" === "apple");
console.log("10" < "9");

文本按字典序

字符串一个字符一个字符比,像查字典——不是人脑子里的「大小」。"A" < "B" 为 true。大写不等于小写("Apple" === "apple" 为 false)。引号里的数字也走文本规则:"10" < "9" 可能为 true,因为 "1" 排在 "9" 前面。若本意是数字大小,用 Number() 转换。

在页面上显示一次检查

算出 boolean,再往页面写一句短标签。

用比较做页面检查

html
<!DOCTYPE html>
<html>
<head>
<title>Comparison — page check</title>
</head>
<body>
<p id="out">…</p>
<script>
let age = 18;
let adult = age >= 18;
let box = document.getElementById("out");
box.textContent = "adult=" + adult;
</script>
</body>
</html>

age 是 18,所以 adult 为 true,页面显示 adult=true。把 age 改成 17 再刷新,应看到 adult=false。后面的课才会用 if 分支;这个演示只打印是/否。

自己试一试

  1. 打印 8 === 8 和 8 === "8"。
  2. 打印 8 !== "8" 和 8 !== 8。
  3. 把 4 == "4" 和 4 === "4" 放一起,看差别。
  4. 存 let pts = 50,打印 pts >= 60。
  5. 打印 "cat" === "cat" 和 "Cat" === "cat"。
  6. 在 HTML 演示里只改 age,刷新,读新的 adult= 文字。

常见错误

  • 本想写 === 却写成 =(那是存值,不是提问)
  • 因为「有时能用」就用 ==——它还会转换类型
  • 把数字字符串当数字来排("10" < "9")
  • 忘了比较已经返回 boolean——不必再手工包一层 true/false
  • 把这一家和逻辑运算符(&& ||)混在一起——那些是组合是/否;下一课

小结

  • 比较是提问,返回 true 或 false
  • 优先 === 和 !==(值和类型)
  • 用 < > <= >= 排序;相等包含在 <= 和 >= 里
  • 字符串走字典序,数字文本可能显得怪
  • 新手默认不要用 == / !=
  • 下一课:逻辑运算符——用 &&、|| 和 ! 组合多个是/否

🧠 测试您的知识

准备开始

测试您的知识

通过这个互动测验挑战自己,看看你对这个主题的理解程度如何

❓
8
问题
🎯
70%
及格要求
♾️
∞
时间
🔄
∞
尝试次数

📝 说明

  • 仔细阅读每个问题
  • 为每个问题选择最佳答案
  • 您可以随时重新参加测验
  • 您的进度将显示在顶部