이 두가지 연산자를 보면 이 짤이 제일 먼저 생각난다,,
그럼 바로 두 연산자를 비교해보자!
== 연산자는 두 피연산자의 값의 타입이 다를 경우 자동으로 일부 피연산자의 타입을 변환 후 값을 비교합니다.
타입을 비교하지 않으므로 === 연산자에 비해 느슨하다고 할 수 있습니다.
예시)
10 == 10 // true
10 == '10' // true
true == 1 // true
true == '1' // true
(아래 두 예시는 처음 알았다.)
true == 'true' // false
null == undefined // true
=== 연산자는 타입을 변환하지 않으므로 == 연산자에 비해 비교하는 방식이 엄격합니다.
=== 연산자는 타입이 다르면, false를 반환합니다.
예시)
10 === 10 // true
10 === '10' // false
true === 1 // false
true === 'true' // false
null === undefined // false
NaN === NaN // false
*NaN 값은 자기 자신을 포함하여 어떠한 값과도 일치하지 않습니다.
즉, === 연산자에 NaN 값이 존재하는 경우 항상 false입니다.
출처: https://developer-talk.tistory.com/184 [평범한 직장인의 공부 정리:티스토리]