==
연산자는 피연산자들을 모두 같은 자료형으로 형 변환한 뒤에 비교를 진행합니다. 그럼 Number
타입과 String
타입을 비교할 때는 모두 Number
로 변환한 뒤 비교할까요? 아니면 모두 String
형으로 변환한 뒤 비교할까요? 이럴 경우는 Number
타입으로 변환하는 것이 우선입니다. 만약‘abc’
와 같은 숫자값이 없는 스트링 값들은 NaN
(Not a number)값으로 변환이 된 후 비교가 진행됩니다. 참고로 빈 물자열 ‘’
은 숫자와 비교하게 되면 숫자 0으로 변환됩니다.
같은 타입이 아니더라도 값을 비교해야 할 때 쓰입니다. 예를 들어 사용자에게 어떤 숫자값을 입력받고 그 값을 특정 숫자들과 비교할 때, 입력받은 숫자는 String
형인 경우가 있습니다. 이럴 때 ==
연산자를 써야 의도했던 대로 비교가 이루어집니다.
===
연산자는 같은 타입이 아닌 두 피연산자에 대해서는 항상 false를 반환합니다. 자료형이 같은 피연산자들에 한해서 값을 비교합니다. 따라서 ‘2’
와 숫자 2
를 ===
연산자를 이용해서 비교하면 false
가 나옵니다. 참고로 NaN
값의 Number
타입 두 개를 ===
연산자를 이용해서 비교하게 되면 false
를 반환합니다. 조금 더 정밀하고 안전한 비교를 위해서는 ==
연산자보다 ===
연산자를 쓰는것이 권장됩니다.