JavaScript中相等运算符(==)与等同运算符(===)的区别详解

作者:闭包旅人

时间:2026-10-27

浏览:367

本文详细解析JavaScript中相等运算符(==)与等同运算符(===)的判定逻辑。===运算符要求类型与值完全一致,而==运算符在类型不同时执行隐式转换。文章列举了null与undefined、字符串与数字、布尔值及对象在==运算下的具体转换规则,帮助开发者准确选择比较方式。

文章目录

==与===运算符概述

==运算符和===运算符用于检测两个值是否相等,二者基于不同的判定标准。这两个运算符均接受任意类型的操作数:若两个操作数相等,均返回true;否则返回false。其中,===为等同运算符,采用严格的同一特质定义,要求两个操作数在类型和值上完全相同;而==为相等运算符,采用相对宽松的定义进行比较。

理解上述基本概念是掌握两者区别的前提。

接下来具体分析两个值在何种情况下被视为相等。

===等同运算符判定规则

===运算符的判定规则如下:

1. 若两个值的类型不同,则它们不相等。

2. 若两个值的类型均为数字且数值相同,则它们相等;唯一的例外是当其中一个或两个值为NaN时,结果为不相等。

3. 若两个值均为字符串,且相同位置上的字符完全一致,则它们相等;若字符串长度或内容存在差异,则不相等。

==相等运算符判定规则

==运算符的判定规则如下:

1. 若两个值的类型相同,则直接检测其等同性。若值完全相同,则相等;否则不相等。

2. 若两个值的类型不同,它们仍可能相等,具体转换规则如下:

1) 若一个值为null,另一个值为undefined,则二者相等。

2) 若一个值为数字,另一个值为字符串,系统会将字符串转换为数字,再使用转换后的值进行比较。

3) 若一个值为布尔值,true将转换为1,false将转换为0,随后再进行比较。

4) 若一个值为对象,另一个值为数字或字符串,系统会将对象转换为原始类型的值,再进行比较。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章