true
, false
로 구분됨
let a = 1 === 2;
let b = 'abc' !== 'def'
let c = a !== b;
let d = typeof a === typeof b === true;
console.log(a, typeof a); // false, boolean
console.log(b, typeof b); // true, boolean
console.log(c, typeof c); // true, boolean
console.log(d, typeof d); // true, boolean
console.log(
true, !true, false, !false
);
console.log(
true, !true, !!true, !!!true
);
console.log(
false, !false, !!false, !!!false
);
!
를 붙이면 상태가 반전된다.
&&
: AND - 양쪽 모두 true 일 때, true 반환. (한 쪽이라도 false면 false 반환함)false
면 뒤의 것을 평가할 필요 없이 falseconsole.log(
true && true, // true
true && false, // false
false && true, // false
false && false, // false
);
||
: OR - 한쪽만 true 여도, true 반환. (양쪽 모두 false일 경우만 false 반환함)true
면 뒤의 것을 평가할 필요 없이 trueconsole.log(
true || true, // true
true || false, // true
false || true, // true
false || false, // false
);
let a = true;
// a = false;
let b = true;
// b = false;
console.log(
!(a && b) === (!a || !b),
!(a || b) === (!a && !b)
); // 💡 항상 true
(조건식) ? '참입니다' : '거짓입니다'
👉 조건식이 true
면 앞 반환, false
면 뒤 반환
let x = true;
// x = false;
let y = x ? '참입니다.' : '거짓입니다.';
console.log(y); // 참입니다
중첩 삼항연산자 (3개 조건 비교)
let score = 100;
score >= 90
? console.log("A+")
: score >= 50
? console.log("B+")
: console.log("F");
위와 같이 3가지 이상의 조건을 가진 조건문도 삼항 연산자로 쓸 수 있지만 이런 경우에는 if 조건문을 사용하는 것이 깔끔하다.
if (score >= 90) {
console.log("A+");
} else if (score >= 50) {
console.log("B+");
} else {
console.log("F");
}
console.log(
1.23 ? true : false,
-999 ? true: false,
'0' ? true : false,
' ' ? true : false,
Infinity ? true : false,
-Infinity ? true : false,
{} ? true : false,
[] ? true : false,
);
소숫점, 음수, '0'(문자), '스페이스(공백)', infinity, { }, [ ] 등은 삼항연산자에 들어갔을 경우 Truthy.
console.log(
0 ? true : false,
-0 ? true : false,
'' ? true : false,
null ? true : false,
undefined ? true : false,
NaN ? true : false,
);
0(숫자), ''(공백 없는 문자), null, undefined, NaN 등은 삼항연산자에 들어갔을 경우 Falsy.
예제 코드
const getName = (person) => {
if (!person) {
// falsr NOT => True
return "객체가 아닙니다";
}
return person.name;
};
let person;
const name = getName(person);
console.log(name);
위와 같이 truthy falsy 조건을 활용할 수 있다.
let x = 1, y = 2, z = 3;
console.log(x, y, z);
// 마지막으로 실행한 것 반환
console.log(
(++x, y += x, z *= y)
); // 12
소괄호 안에 쉼표를 사용한 쉼표 연산자 같은 경우 왼쪽부터 차례로 실행하여 가장 마지막 값을 반환함.
let a = false;
let b = 0;
let c = '';
let d = null;
let e;
console.log(
a ?? '기본값', // false
b ?? '기본값', // 0
c ?? '기본값', // ''
d ?? '기본값', // '기본값'
e ?? '기본값', // '기본값'
);
a ?? '기본값'
👉 a가 null
혹은 undefined
일때만 '기본값' 반환. 아니면 a 그대로 반환함.