JavaScript에서
true나false로 직접 표현되지 않는 값들도 조건문에서 참(truthy) 또는 거짓(falsy)으로 평가된다.
undefinednull0-0NaN"" (빈 문자열)0n (BigInt의 0)let f1 = undefined;
let f2 = null;
let f3 = 0;
let f4 = -0;
let f5 = NaN;
let f6 = "";
let f7 = 0n; // Big Integer
if (!f1) {
console.log("falsy"); // Falsy
}
let falsyValues = [undefined, null, 0, -0, NaN, "", 0n];
falsyValues.forEach((value) => {
if (!value) {
console.log(`${value}는 Falsy 값입니다.`);
}
});
Falsy 값 7가지를 제외한 나머지 모든 값은 Truthy로 평가된다.
"hello"123, -45, Infinity, -Infinity{}, []() => {}let t1 = "hello";
let t2 = 123;
let t3 = [];
let t4 = {};
let t5 = () => {};
if (t5) {
console.log("Truthy");
}
let truthyValues = ["hello", 123, [], {}, () => {}];
truthyValues.forEach((value) => {
if (value) {
console.log(`${value}는 Truthy 값입니다.`);
}
});
function printName(person) {
console.log(person.name);
}
// person에 값이 있을 경우
let person = { name: "ttining" };
printName(person); // ttining
// person에 값이 없을 경우
let person;
printName(person); // Uncaught TypeError: Cannot read properties of undefined (reading 'name')
undefined나 null인 경우 오류가 발생할 수 있다.function printName(person) {
if (person === undefined || person === null) {
console.log("person의 값이 없습니다.");
return;
}
console.log(person.name);
}
let person = null;
printName(person); // 결과: person의 값이 없습니다.
function printName(person) {
if (!person) {
console.log("person의 값이 없습니다.");
return;
}
console.log(person.name);
}
let person = null;
printName(person); // 결과: person의 값이 없습니다.
let name = userName || "Unknown";
console.log(name); // userName이 Falsy하면 "Unknown" 출력
let obj = { name: "ttining" };
if (obj && obj.name) {
console.log(obj.name); // ttining
}