javascript 비교연산자

bebrain·2022년 12월 2일
0

null과 0

console.log( null > 0 );  // false
console.log( null < 0 ); // false
console.log( null == 0 ); // false
console.log( null >= 0 ); // true

동등 연산자(==)와 기타 비교 연산자(<, >, <=, >=)는 동작 방식이 다르다.

비교연산자 (<, >, <=, >=)는 동작 원리에 따라 null이 숫자형으로 변환돼 0이 된다.

반면 동등 연산자 (==)는 피연산자가 undefined나 null일 때 형 변환을 하지 않는다. undefined와 null을 비교하는 경우에만 true를 반환하고, 그 이외의 경우(null이나 undefined를 다른 값과 비교할 때)는 무조건 false를 반환한다.

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

동등 연산자를 사용해 null과 undefined를 비교하면 특별한 규칙이 적용돼 true가 반환 👯‍ 둘이 커플이다

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

두 값의 자료형이 다르기 때문에 일치 비교 시 false 반환

undefined

console.log( undefined > 0 ); // false ①
console.log( undefined < 0 ); // false ②
console.log( undefined == 0 ); // false ③
console.log( undefined >= 0 ); // false ④

마찬가지로 기타 비교 연산자(<, >, <=, >=)의 동작원리에 따라 undefined가 NaN으로 변환되는데(숫자형으로의 변환), NaN이 피연산자인 경우 비교 연산자는 항상 false를 반환한다.

undefined는 null이나 undefined와 같고, 그 이외의 값과는 같지 않기 때문에 ③, ④은 false를 반환한다.

⚠ 일치 연산자 (===)를 제외한 비교 연산자의 피연산자에 undefined나 null이 오지 않도록 특별히 주의

⚠ undefined나 null이 될 가능성이 있는 변수가 <, >, <=, >=의 피연산자가 되지 않도록 주의

만약 변수가 undefined나 null이 될 가능성이 있다고 판단되면, 이를 따로 처리하는 코드를 추가해야한다.

물음표연산자 (조건부연산자)

조건부 연산자는 물음표?로 표시한다.
피연산자가 세 개이기 때문에 '삼항(ternary) 연산자’로 불리기도 한다.
※ js에서 피연산자를 3개나 받는 연산자는 조건부 연산자가 유일

🔔 문법 : let result = condition ? value1 : value2;

condition(조건)이 true라면 value1이, 그렇지 않으면 value2를 반환

let accessAllowed;
let age = prompt('나이를 입력해 주세요.', '');

if (age > 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}

console.log(accessAllowed);

if로 표현하면 이렇게 길었던 식이

let accessAllowed = (age > 18) ? true : false;

조건부연산자를 사용하면 한 줄로 표현가능해진다.

📖 다중?

let age = prompt('나이를 입력해주세요.', 18);

let message = (age < 3) ? '아기야 안녕?' :
  (age < 18) ? '안녕!' :
  (age < 100) ? '환영합니다!' :
  '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!';

console.log( message );

복잡해보이지만 여러조건을 나열한 것에 불과하다.

0개의 댓글