JavaScript는 엄격한 비교와 형 변환(동등) 비교 두 가지의 비교 방법을 가지고 있습니다. 엄격 비교(===)는 두 피연산자가 같은 자료형에, 그 값도 일치해야 참입니다. 동등 비교(==)는 비교 전에 두 피연산자를 동일한 자료형으로 변환한 뒤 비교합니다.
1 == 1 // true
1 == '1' // true
0 == false // true
0 == null // false
0 == undefined // false
null == undefined // true
const a = {}
const b = {}
console.log(a == b ) // false
console.log(a === b ) // false
자료형 변환 없이 두 연산자가 엄격히 같은지 판별
같은 자료형, 값이어야 참
3 === 3 // true
3 === '3' // false
null === undefined // false
null은 값이 없음을 명시적으로 나타낸 값이고, undefined는 값이 없는 상태이다.
==
으로는 true 이지만, ===
으로는 false를 반환한다.
undefined == null // true
undefined === null // false
javascript에서 문자열은 원시 타입이지만 객체로도 생성이 가능하다. 이 경우 ==
와 ===
의 결과가 다르다.
const a = 'str'
const b = new String('str')
console.log(a == b) // true
console.log(a === b) // false
성능 측면에서는 큰 차이는 없지만 안전한 타입 체크와 복잡한 상황에서의 정확성을 위해 ===
를 사용하는 것을 추천.