1. 基础类型比较(不同类型数据比较)
-
===
比较,必须在值和数据类型都相同的情况下,结果才为 true,否则为 false
console.log(100 === 100); // 结果:true
console.log(100 === '100'); // 结果:false
-
==
比较,几种特殊情况
// 数字和字符串可以直接比较值,不看类型
console.log(100 == '100'); // 结果:true
// 1 和 true比较的结果为 true,0 和 false比较的结果为 true
console.log(true == '1'); // 结果:true
console.log(true == 1); // 结果:true
console.log(false == '0'); // 结果:true
console.log(false == 0); // 结果:true
// 1 和 true比较的结果为 true,0 和 false比较的结果为 true
console.log(false == ''); // 结果:true
console.log(undefined == null); // 结果:true
// false 和 空字符串比较的结果为true,undefined 和 null比较的结果为true
console.log(false == ''); // 结果:true
console.log(undefined == null); // 结果:true
// undefined、null、''、0转化成布尔类型的时候结果为 false,字符串'0'转化成布尔类型的时候结果为 true
console.log(!!undefined == false); // 结果:true
console.log(!!null == false); // 结果:true
console.log(!!'' == false); // 结果:true
console.log(!!0 == false); // 结果:true
console.log(!!'0' == false); // 结果:false,字符串0转化成布尔类型结果为false
2. 引用类型比较
两个引用类型比较,比较的不是值而是引用地址,只有引用地址相同才相等
- 引用类型比较引用地址
const a = { name: 'a' }
const b = { name: 'a' }
const c = a
console.log(a === b); // 结果:false ,就算值相等但是引用地址不同也不相等
console.log(a === c); // 结果:true
- 引用类型比较值
const a = { name: 'a', age: 20 }
const b = { name: 'a', age: 20 }
console.log(a.name === b.name && a.age === b.age); // 结果:true
网友评论