登录
首页 >  文章 >  前端

JS中==与===区别详解

时间:2026-01-08 21:03:49 353浏览 收藏

哈喽!今天心血来潮给大家带来了《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如何比较值_==和===有什么区别

JavaScript中=====的底层行为差异

==会先尝试类型转换再比较,===要求值和类型都严格一致。这不是“松散 vs 严格”的抽象说法,而是具体到每种类型组合都有明确定义的算法。

比如0 == falsetrue,因为false被转成0;但0 === falsefalse,因为一个是number,一个是boolean

哪些值用==会意外相等

这些组合在真实项目里容易引发隐蔽 bug:

  • null == undefinedtrue(但null === undefinedfalse
  • "0" == 0true(字符串转数字)
  • "" == 0true(空字符串转为0
  • [] == falsetrue(空数组先转为空字符串,再转为0
  • [0] == falsetrue[0]转字符串是"0",再转数字是0

什么时候==反而比===更合理

极少,但存在。典型场景是检查nullundefined

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学习网公众号,给大家分享更多文章知识!

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