JS中==与===区别详解
2026-01-08 21:03:49
0浏览
收藏
哈喽!今天心血来潮给大家带来了《JS中==和===区别详解》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!
==先类型转换后比较,===要求值和类型均严格一致;如0==false为true而0===false为false,null==undefined为true但null===undefined为false,"0"==0、""==0、[]==false、[0]==false均为true;仅value==null检查null/undefined时合理;ESLint和TS默认禁用==,动态类型场景需显式转换后用===。

JavaScript中==和===的底层行为差异
==会先尝试类型转换再比较,===要求值和类型都严格一致。这不是“松散 vs 严格”的抽象说法,而是具体到每种类型组合都有明确定义的算法。
比如0 == false为true,因为false被转成0;但0 === false是false,因为一个是number,一个是boolean。
哪些值用==会意外相等
这些组合在真实项目里容易引发隐蔽 bug:
null == undefined→true(但null === undefined是false)"0" == 0→true(字符串转数字)"" == 0→true(空字符串转为0)[] == false→true(空数组先转为空字符串,再转为0)[0] == false→true([0]转字符串是"0",再转数字是0)
什么时候==反而比===更合理
极少,但存在。典型场景是检查null或undefined:
if (value == null) {
// 等价于 value === null || value === undefined
}
这个惯用法比写两个===更简洁,且是 ECMAScript 明确推荐的写法。其他情况基本没有正当理由用==。
ESLint 和 TypeScript 怎么帮你避开陷阱
现代工具链默认禁用==:
- ESLint 规则
eqeqeq: "error"会直接报错 - TypeScript 在
strict模式下对==给出警告,尤其当两边类型明显不兼容时(如string == number) - Chrome DevTools 控制台里输入
0 == ""会加灰色提示“Use ‘===’ instead”
真正难防的是动态类型场景,比如从表单input.value拿到的永远是字符串,却和数字变量比较——这时不靠工具,得靠意识:只要涉及用户输入、URL 参数、JSON 解析结果,一律先显式转换再用===。
好了,本文到此结束,带大家了解了《JS中==与===区别详解》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!
CSS色相旋转技巧详解
- 上一篇
- CSS色相旋转技巧详解
- 下一篇
- Java优先队列原理与堆结构详解
查看更多
最新文章
-
- 文章 · 前端 | 1天前 | js语法教程
- JSSet集合使用与去重技巧详解
- 350浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTML5离线缓存清除方法大全
- 462浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTML编码如何避免乱码问题
- 235浏览 收藏
-
- 文章 · 前端 | 1天前 |
- HTMLaddress标签使用方法详解
- 309浏览 收藏
-
- 文章 · 前端 | 1天前 |
- 发布订阅模式消息队列原理与实现解析
- 135浏览 收藏

