比较
赋值把带名字的盒子装满了。现在问盒子里是什么:是同一个吗?更大吗?够不够?答案永远是是或否——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 |
把这张表放在手边。== 和 != 也存在,但本课把它们当新手陷阱——比较前可能先转换类型。等以后专门讲强制转换之前,先用 === / !==。
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 藏起来。
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、空字符串是不同的东西。本课优先 ===。
给数字排序
< > <= >= 把数字排成顺序。对 <= 和 >= 来说,相等也算是。
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 存下来。
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)。比较已经给出布尔值——你只是给它起了名字。
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,再往页面写一句短标签。
<!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 分支;这个演示只打印是/否。
自己试一试
- 打印
8 === 8和8 === "8"。 - 打印
8 !== "8"和8 !== 8。 - 把
4 == "4"和4 === "4"放一起,看差别。 - 存
let pts = 50,打印pts >= 60。 - 打印
"cat" === "cat"和"Cat" === "cat"。 - 在 HTML 演示里只改
age,刷新,读新的adult=文字。
常见错误
- 本想写
===却写成=(那是存值,不是提问) - 因为「有时能用」就用
==——它还会转换类型 - 把数字字符串当数字来排(
"10" < "9") - 忘了比较已经返回 boolean——不必再手工包一层
true/false - 把这一家和逻辑运算符(
&&||)混在一起——那些是组合是/否;下一课
小结
- 比较是提问,返回
true或false - 优先
===和!==(值和类型) - 用
<><=>=排序;相等包含在<=和>=里 - 字符串走字典序,数字文本可能显得怪
- 新手默认不要用
==/!= - 下一课:逻辑运算符——用
&&、||和!组合多个是/否
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部