'=='与'==='

JavaScript 中有两个用于判断两个值相等的符号:===== 。分两种情况来考虑:基本数据类型和对象。

基本数据类型

对于基本数据类型而言,=== 直接比较两个基本数据类型的值是否相等,不做类型转换,== 会试图进行类型转换再比较。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const s1 = '1'
const s2 = '1'

const n1 = 1
const n2 = 1.0

const b = true

console.log(s1 === s2) // true
console.log(s1 === n1) // false
console.log(s1 == n1) // true
console.log(n1 === n2) // true
console.log(n1 === b) // false
console.log(s1 == b) // true
console.log(n1 == b) // true

对象

对于对象而言, ===== 效果完全一样,都是用于判断两个对象是否是同一个对象

1
2
3
4
5
6
7
const o1 = {}
const o2 = {}
const o3 = o1 // 此时 o1 和 o3 指向堆内存中的同一个对象

console.log(o1 == o2) // false
console.log(o1 === o2) // false
console.log(o1 === o3) // true

总结

对于对象而言,===== 效果是一样的,而且是比较两个对象变量是否指向内存中的同一块区域。对于基本数据类型而言,== 在面对两个不同类型的数据时,会试图进行类型转换再比较,而===则不会,直接比较值是否相等。

图片测试