在JavaScript中, == 和 === 都是用于比较两个值的运算符,但它们有一些区别。以下是它们的区别:
== 比较:
①== 会进行类型转换,然后再比较两个值是否相等。
②如果两个值的类型不同,== 会尝试将它们转换为相同类型,然后再进行比较。
③如果比较的两个值都是对象类型,那么会检查它们是否引用同一个对象。
===(严格相等)比较:
① === 不会进行类型转换。
②只有当两个值的类型和值都相等时,=== 才会返回 true,否则返回 false。
③如果比较的两个值都是对象类型,即使它们具有相同的属性和值,但它们引用的不是同一个对象,=== 也会返回 false。
简而言之,== 是非严格相等比较,会进行类型转换,而 === 是严格相等比较,不进行类型转换。
0 == false; // true,因为在比较时,false 被转换为数字 0
0 === false; // false,因为它们的类型不同
1 == '1'; // true,因为在比较时,字符串 '1' 被转换为数字 1
1 === '1'; // false,因为它们的类型不同
null == undefined; // true,因为它们的值都是无效的对象或未定义的
null === undefined; // false,因为它们的类型不同
{ name: 'John' } == { name: 'John' }; // false,因为它们引用的不是同一个对象
{ name: 'John' } === { name: 'John' }; // false,因为它们引用的不是同一个对象