비교 연산자


불린형 반환

  • true가 반환되면 긍정,참,사실을 의미
  • false가 반환되면 부정, 거짓, 사실이 아님을 의미

console.log(2 > 1); // true
console.log(2 == 1); //false
console.log(2 != 1); //true

문자열 비교

  • 자바스크립트는 사전 순으로 문자열 비교
  • 단어를 구성하는 문자 하나하나를 비교하여 등재 순서를 정하는 것과 같이 자바스크립트도 문자열을 구성하는 하나하나를 비교해가며 문자열을 비교

console.log("Z" > "A"); //true
console.log("Glow" > "Glee"); //true
console.log("Bee" > "Be"); //true

  • 알고리즘은 다음과 같이 적용
    • 두 문자열의 첫 글자를 비교
    • 첫번째 문자열의 첫글자가 다른 문자열의 첫글자보다 크면(작으면), 첫 번째 문자열이 두번째 문자열보다 크다고(작다고) 결론 내고 비교를 종료
    • 두 문자열의 첫글자가 같으면 두번째 글자를 같은 방식으로 비교

  • 주의
    • 정확히는 사전순이 아니라 유니코드 순
    • 자바스크립트는 대 소문자를 따진다.
    • 대문자 'A' 와 소문자 'a'를 비교 했을 때 소문자 'a'가 더 큽니다.

다른 형을 가진 값 간의 비교

  • 불린값의 경우 true는 1, false는 0으로 변환 후 비교

 console.log('2' > 1); //true 2를 1과 같은 타입으로 변환하여 비교 연산

  • 흥미로운 상황
    • 동시에 일어나지 않을 법한 두 상황이 동시에 일어나는 경우
    • 동등 비교(==)시 true를 반환
    • 논리 평가 시 값 하는 true, 다른 값 하나는 false를 반환

let a = 0;
console.log( Boolean(a) ); // false

let b = "0";
console.log( Boolean(b) ); // true

console.log(a == b); // true!

일치 연산자

  • 동등 연사자 ==은 0과 false를 구별하지 못함

console.log(0 == false); //true
console.log(' ' == false); //true

  • 일치 연산자 ===를 사용하면 형 변환 없이 값을 비교
  • 일치 연산자는 엄격한 동등 연산자 자료형의 동등 여부까지 검사하기 떄문에 피연산자 a와 b의 형이 다를 경우 a === b는 즉시 false를 반환

console.log(0 === false);

null이나 undefined와 비교

  • 일치 연산자 ===를 사용하여 null undefined를 비교
  • 두 값의 자료형이 다르기 때문에 false를 반환

console.log( null === undefined); //false

  • 동등 연산자 ==를 사용하여 null과 undefined를 비교

console.log( null == undefined); //true

  • 산술 연산자나 기타 비교 연산자를 사용하여 null과 undefined를 비교
    • null과 nudefined는 숫자형으로 변환 null은 0, undefined는 NaN으로 변합니다

null vs 0


console.log(null >0) (1) // false
console.log(null >0) (2) // false
console.log(null >0) (3) // true

  • 동등 연산자 ==dhk 기타 비교 연산자 <, >, <=, >=의 동작 방식이 다르다.
    1에서 null > 0이 거짓을, 3에서 null >= 0이 참을 반환하는 이유는 null이 숫자형으로 반환돼 0이기 때문
  • 동등 연산자 ==는 피연산자가 undefined나 null일 때 형 변환을 하지 않는다. undefined와 null을 비교하는 경우에만 true를 반환 그 이외의 경우에는 false반환

비교가 불가능한 undefined


console.log(undefined > 0) (1)//false
console.log(undefined < 0) (2)//false
console.log(undefined == 0) (3)//false

  • 1과 2에선 undefined가 nan으로 변환되는데 NaN이 피연산자인 경우 비교 연산자는 항상 fasle 반환
  • undefined는 null이나 undefined와 같고, 이외의 값과는 같지 않기 때문에 (3)은 false 반환

위 내용은 javascript.info 사이트에서 공부한 내용을 정리

profile
개발 옆차기

0개의 댓글