자바스크립트에서는 값을 비교하기 위해 == 연산자와 === 연산자를 사용한다.
두 연산자는 값이 일치하면 true를 반환하고 값이 일치하지 않으면 false를 반환한다.
두 연산자가 반환해 주는 값은 같은데 그렇다면 이 둘의 차이점은 뭘까??
간단하게 설명하면 ===는 엄격한 동치 연산자, ==는 느슨한 동치 연산자 또는 추사적 동치 연산자라고 부른다. 부르는 이름부터 알 수 있듯이 ===는 엄격하게 데이터 타입까지 값이 같아야 true를 반환하고 ==는 타입 비교 없이 값만 같으면 바로 true를 반환해 주는 것이다.
== 연산자
10 == 10 // true 10 == '10' // true true == 1 // true true == '1' // true null == undefined // true
이렇게 타입까지는 비교하지 않고 값만 같다면 바로 true를 반환해 주는 것을 볼 수 있다.
'10'이라는 문자열이 있으면 문자열을 숫자로 변환 후에 값을 비교해 주는 것이다.
또 null과 undefined는 엄연히 다르지만 == 연산자는 true를 반환한다.
=== 연산자
10 === 10 // true 10 === '10' // false true === 1 // false true === 'true' // false null === undefined // false NaN === NaN // false
=== 연산자는 타입이 다르면 타입 변환 없이 바로 false를 반환한다.
NaN값은 자기 자신을 포함하여 어떠한 값과도 일치하지 않는다. 즉 === 연산자에 NaN값이 존재하는 경우는 항상 false이다.