JavaScript中==与===的区别详解

作者:青柠

时间:2026-10-28

浏览:160

本文详细解析JavaScript中==与===运算符的区别。===要求类型与值完全一致,否则返回false;==在类型不同时会自动进行隐式类型转换后再比较。文章列举了数值、字符串、布尔值、null与undefined以及对象在两种运算符下的具体比较规则,并通过示例代码展示实际执行结果,帮助开发者避免常见的类型陷阱。

文章目录

==与===的基本区别

简而言之,==运算符会先进行类型转换再进行比较,而===运算符则先判断类型,若类型不同则直接返回false。===表示恒等于,要求比较的两边在类型和数值上绝对相同。


alert(0 == ""); // true
alert(0 == false); // true
alert("" == false); // true

alert(0 === ""); // false
alert(0 === false); // false
alert("" === false); // false

===运算符的比较规则

首先来看===运算符,其逻辑相对简单,具体比较规则如下:

1、若两个值的类型不同,则判定为不相等。 2、若两个值均为数值且值相同,则判定为相等;但有一个例外情况:如果其中至少有一个值是NaN(Not a Number),则判定为不相等(判断一个值是否为NaN,只能使用isNaN()函数)。 3、若两个值均为字符串,且每个位置的字符完全一致,则判定为相等;否则判定为不相等。 4、若两个值均为true或均为false,则判定为相等。 5、若两个值都引用同一个对象或函数,则判定为相等;否则判定为不相等。 6、若两个值均为null或均为undefined,则判定为相等。

==运算符的比较规则

接下来分析==运算符,其具体比较规则如下:

1、若两个值的类型相同,则直接进行===比较,规则同上。 2、若两个值的类型不同,它们仍可能相等。此时需根据以下规则进行类型转换后再进行比较: a、若一个值是null,另一个是undefined,则判定为相等。 b、若一个是字符串,另一个是数值,需将字符串转换为数值后再进行比较。 c、若任一值是true,将其转换为1后再比较;若任一值是false,将其转换为0后再比较。 d、若一个是对象,另一个是数值或字符串,需将对象转换为基本类型的值后再比较。对象转换为基本类型时,通常调用toString或valueOf方法。JavaScript核心内置类会尝试先调用valueOf方法再调用toString方法;但Date对象是一个例外,它使用toString方法进行转换。对于非JavaScript核心的对象,转换规则较为复杂,此处不再赘述。 e、其他任何组合(如数组等)均判定为不相等。

实用工具推荐

电子包浆

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

使用 ›
图片压缩

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

使用 ›
相关文章