비교연산자란?
비교연산자란 좌항과 우항의 값을 비교하여 Boolean
값 즉, true
, false
를 반환합니다. javascript
는 엄격한 비교(===
)와 형변환 비교(==
)와 같이 두가지의 비교 연산자를 갖고 있습니다.
동등 연산자 (==
)
동등 연산자는 좌항과 우항을 비교 할 때 서로 타입이 다르면 같은 타입을 일치시키고 같은 값인지 비교합니다. 따라서 좌항과 우항의 타입이 다르더라도 값만 비교하기 때문에 타입이 일치 된 후 값이 같을 수 있습니다.
1 | 1 == 1 // true |
위와 같이 string
과 number
타입이 다르더라도 서로 같은 타입으로 변환 후 비교하기 때문에 숫자 1과 문자 1의 비교는 true
를 반환합니다. 또한 빈 string
과 숫자 0은 javascript
에서 false
를 의미합니다. 따라서 숫자 0과 빈 문자열 ""
는 비교 시 true를 반환합니다.
1 | false == "false" // false |
하지만 false
와 문자열 "false"
의 비교는 false
입니다. 문자열 "false"
는 문자가 존재하기 때문에 빈 문자열을 false
로 판단하는 것과 다르기 때문입니다. 또한 undefined
와 null
, NaN
과 같이 예측하기 어려운 비교 결과를 볼 수 있습니다. 따라서 개발 시 비교 연산자를 사용하게 된다면 일치 연산자(===
)를 사용하는 것이 좋습니다.
일치 연산자 (===
)
동등 연산자와는 다르게 일치 연산자는 좌항과 우항의 값과 타입이 모두 일치하는 경우에만 true
를 반환합니다.
1 | 0 === "0" // false |
위와 같이 동등 연산자에서 true
를 반환 한 값들은 일치 연산자에서 타입까지 같지 않기 때문에 false
를 반환합니다.
1 | NaN === NaN // false |
하지만 NaN
의 경우는 자신과 일치하지 않는 유일한 값입니다.
1 | isNaN(NaN) // true |
따라서 NaN
인지 확인하려면 isNaN
이라는 빌트인 함수를 이용하여 NaN
값을 확인해야 합니다.