JavaScript中==与===运算符的区别与类型转换规则

作者:清欢时间:2026-10-23 13:32:55浏览:88

本文详细解析JavaScript中==与===运算符的行为差异。===进行严格比较,要求类型与值均相同;==在类型不同时执行隐式类型转换,涉及null、undefined、数字、字符串及对象到原始值的转换规则。

===运算符:

===运算符的严格比较规则

当比较的两个值类型不同时,===运算符直接返回false。


若两个值均为number类型且数值相等,则返回true。


若两个值均为string类型且字符串内容完全一致,则返回true。


若两个值均为布尔值true或均为false,则返回true。


若两个值指向同一个Object、Array或Function对象,则返回true。


若两个值均为null或均为undefined,则返回true。


==运算符:

==运算符的类型转换机制

当两个值类型相同时,==运算符的行为等同于===运算符,返回相同的比较结果。


即使两个值类型不同,==运算符仍有可能返回true,这取决于特定的类型转换规则。


若一个值为null,另一个值为undefined,==运算符会返回true。


若一个值为string,另一个为number,==运算符会将string转换为number后再进行比较。


若一个值为true,==运算符会将其转换为1进行比较;若为false,则转换为0进行比较。


若一个值为Object,另一个为number或string,==运算符会尝试通过valueOf()或toString()方法将Object转换为原始类型后再进行比较。

作者最新文章