==는 비교 대상 두개가 타입이 다르면 강제로 형 변환
한다음에 비교한다
===는 타입이 다르면 바로 false
를 리턴한다.
false == 0
0 == ""
false == ""
위 3가지 경우 모두 true
이다.
자바스크립트에서는 ""
, 0
, null
, undefined
, NaN
는 falsy
값이라고 한다. 즉 값이 false
로 취급된다는것이다.
null == null // true
undefined == undefined // true
null == undefined // true
위 3가지 경우 모두 true가 나온다.
null
과 undefined
모두 falsy
값이기 때문이다.주의
를 해야 할 것같다. 자주 마주칠수 있는 상황인것같다.<aside>
💡 NaN
은 어떤 값과도 동일하지 않다. ==나 ===로 비교하면 무조건 false
가 나온다
</aside>
자바스크립트는 유연한 언어이기 때문에==
와같은 느슨한 동등 비교를 할때 자동으로 타입을 맞춰준다.
하지만, 이것은 실제 개발할때 진정으로 두 피연산자를 비교한다고 볼 수 없다. 강제형변환이 일어나지 않는 ===
를 사용하는것이 항상 더 좋다고 한다.