==, === 의 차이
자바스크립트는 기본적으로 타입이 매우 유연한 언어입니다. 보통 어떤 변수를 선언하면 형변환이 암시적으로 이루어지는데, 그래서 위에 짤 처럼 숫자와 문자를 같다고 하는 상황이 발생하는 것입니다.
==, === 은 각각 Equal Operator, Strict Equal Oprator 라고 부르고 느슨한 비교, 엄격한 비교라고 부르기도 합니다.
0 == false; // true
0 == ""; // true
1 == true; // true
1 == "1"; // true
1 == [1]; // true
"1" == [1]; // true
"1" == true; // true
true == [1]; // true
false == ""; // true
false == null; // false
false == undefined; // false
null == undefined; // true
== 는 비교를 할때 비교하는 값의 타입을 암시적으로 변환하게 됩니다.
그렇기 때문에 위의 예시와 같이 예상하지 못한 결과를 반환할 수도 있습니다.
예시
- boolean 과 number 를 비교할때는 bool 값을 number 값으로 변환합니다. ( bool ➡ number )
- string 과 number 를 비교할 때는 string 을 number 로 변환합니다. ( string ➡ number )
- string 과 boolean 을 비교할 때는, boolean 을 number 로 변환 후, number 를 string 으로 변환합니다.
( boolean ➡ number ➡ string ) 1 == "1"; // true 1 == true; // true "1" == true; // true
Reference
'Javascript' 카테고리의 다른 글
[ Javascript ] passed by value, passed by reference 의 차이점 (0) | 2023.01.17 |
---|---|
[ Javascript ] 얕은 복사 vs 깊은 복사 (0) | 2023.01.16 |
[ JavaScript ] Arrow Function ( 화살표 함수 ) (0) | 2023.01.16 |
[JavaScript] 자바스크립트를 멀티 스레드처럼 사용하는 방법 (0) | 2023.01.09 |
[JavaScript] 실행 컨텍스트 그리고 클로저 (0) | 2023.01.09 |