[TIL] 비교 연산자와 조건부 연산자

이지예·2022년 5월 11일
0

JavaScript

목록 보기
10/24

비교 연산자

null vs 0

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

(1),(3)의 기타 비교 연산자와 (2)의 동등 연산자는 동작 방식이 다르다.

  • (1)에서 null>0이 거짓을, (3)에서 null>=0이 참을 반환하는 이유는
    기타 비교 연산자의 동작 원리에 의해 null이 숫자형으로 변환돼 0이 되기 때문이다.
  • (2)의 동등연산자는 피연산자가 undefined나 null 일 때 형 변환을 하지 않는다. undefined와 null을 비교하는 경우에만 true를 반환하고, 이외의 경우는 false를 반환한다.

그렇기 때문에 (2)는 거짓이 된다.

undefined

alert(undefined>0);//false(1)
alert(undefined<0);//false(2)
alert(undefined==0);//false(3)

undefined를 다른 값과 비교해서는 안된다.

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



if와 '?'을 사용한 조건 처리

if(...)문은 괄호 안의 표현식을 평가하고 그 결과를 불린값으로 변환한다.
숫자 0, 빈 문자열"", null, undefined, NaN은 불린형으로 변환 시 false가 된다. 이런 값들은 'falsy(거짓 같은)'값이라고 부른다. 그 외의 값은 true가 되므로 'truthy(참 같은)'값이라고 부른다.

if (0){...} : 0이 falsy이므로 실행되지 않는다.
if (1){...} : 1이 truthy이므로 실행된다.

조건부 삼항연산자 '?'

let result = condition ? value1 : value2;
//condition이 truthy라면 value1, 그렇지 않으면 value2가 반환된다.
let age = year > 18 ? true : false;
let age = year > 18;
//비교 연산자 자체가 true나 false를 반환하기 때문에 위 아래 예시가 같다.

조건에 따라 반환 값을 달리하려는 목적에 부합하는 곳에는 물음표 연산자'?'를 사용하고, 여러 분기를 만들어 처리할 때는 우리 눈은 수직으로 된 코드를 읽는 것이 더 읽기 쉽게 느껴지기 때문에 if를 사용하는 것이 좋다.

0개의 댓글