登录
首页 >  文章 >  前端

==与===区别详解:JS必学基础

时间:2026-01-30 20:15:08 235浏览 收藏

最近发现不少小伙伴都对文章很感兴趣,所以今天继续给大家介绍文章相关的知识,本文《JS中==和===区别详解》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

=== 要求值和类型都一致,== 会强制类型转换;常见陷阱如 0 == false、"" == false、[] == false 均为 true;唯一可接受的 == 用法是 value == null 检查 null 或 undefined。

如何比较值_JavaScript中==和===的区别是什么

== 会强制类型转换,=== 不会

JavaScript 中 == 是抽象相等(又叫“宽松相等”),会在比较前尝试把两边转成同一类型;=== 是严格相等,要求值和类型都一致。这是最核心的区别,也是绝大多数意外行为的根源。

比如 null == undefined 返回 true,但 null === undefinedfalse;又如 "0" == 0true,而 "0" === 0false

常见隐式转换陷阱有哪些

这些不是冷知识,而是日常踩坑高频点:

  • 0 == falsetruefalse 被转成 0
  • "" == falsetrue(空字符串转成 0,再与 false 比)
  • [] == falsetrue(空数组先 .toString()"",再走上面那条)
  • [0] == falsetrue[0].toString()"0",再转成数字 0
  • {} == truefalse,但 {} == falsefalse(对象转原始值逻辑更复杂,容易误判)

什么时候能放心用 ==

几乎不能。唯一被广泛接受的例外是检查 nullundefined

if (value == null) {
  // 等价于 value === null || value === undefined
}

这是 ECMAScript 规范明确鼓励的简写。除此之外,所有其他 == 使用都建议替换成 ===,尤其在条件判断、数组过滤、对象键匹配等场景。

TypeScript 和 ESLint 怎么帮你避坑

即使你写的是 JavaScript,用 eslint-plugin-eslint-recommendedeslint:recommended 配置,默认就启用了 eqeqeq 规则,会警告所有 ==!= 的使用。

TypeScript 编译器本身不检查这个,但配合 strict 模式 + ESLint,基本能杜绝这类问题。注意:类型断言(如 value as string)不会影响运行时比较逻辑,该错还是错。

真正难缠的不是记不住规则,而是某些库返回值类型模糊(比如 localStorage.getItem() 返回 string | null),这时候漏掉 === null 判断,又用 == "" 去测,结果 null == ""false,但逻辑上你想捕获的是“没值”,反而绕过去了。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>