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 );
복잡해보이지만 여러조건을 나열한 것에 불과하다.