Posts 모던 자바스크립트 #2.9. 비교 연산자
Post
Cancel

모던 자바스크립트 #2.9. 비교 연산자

모던 JavaScript 튜토리얼을 따라가면서 정리합니다.

2.9. 비교 연산자

문자열 비교

자바스크립트는 사전순(사전편집순; lexicographical)으로 문자열을 비교한다. 문자열을 구성하는 문자 하나하나를 비교해가며 문자열을 비교한다.

정확히는 사전순이 아니라 유니코드순이다. 자바스크립트가 대소문자를 따질 때 유니코드에서는 소문자가 대문자보다 더 큰 인덱스를 가지고 있기 때문에 소문자가 더 크다고 판단한다.

다른 형을 가진 값 간의 비교

비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꾼다.

1
2
3
alert('2' > 1); // true
alert('01' == 1);
alert( true == 1 ); // true

일치 연산자

동등 연산자(equality operator) ==0false, 빈문자열을 구별하지 못한다.

1
2
alert(0 == false); // true
alert('' == false); // true

이 문제는 동등 연산자 ==가 형이 다른 피연산자를 비교할 때 피연산자를 숫자형으로 바꾸기 때문에 발생한다. 일치 연산자(strict equality operator) ===를 사용하면 형 변환 없이 값을 비교할 수 있다. 자료형의 동등 여부까지 검사하기 때문에 형이 다르면 false를 즉시 반환한다. 일치연산자는 비교 결과가 명확하기 때문에 에러가 발생할 확률을 줄여준다.

null이나 undefined와 비교하기

null이나 undefined를 다른 값과 비교할 땐 예상치 않튼 일이 발생한다.

  • ===를 사용하여 nullundefined를 비교: 거짓 반환
  • --를 사용하여 nullundefined를 비교: 참 반환
  • 산술 연산자나 기타 비교연산자 < > <= >=를 사용하여 nullundefined를 비교
    • null은 0, undefinedNaN으로 변한다.

null vs 0

1
2
3
alert( null > 0 );  // (1) false
alert( null == 0 ); // (2) false
alert( null >= 0 ); // (3) true

비교연산자 > < >= <=null을 비교할 때 숫자형으로 바꾼다. 그러나 ==는 피연산자가 undefinednull일 때 형 변환을 하지 않는다.

This post is licensed under CC BY 4.0 by the author.

모던 자바스크립트 #2.8. 기본 연산자와 수학

모던 자바스크립트 #2.10. if와 '?'를 사용한 조건 처리

Loading comments from Disqus ...