JavaScript
자바스크립트 참 같은 값, 거짓 같은 값 Truthy & Falsy
이수광
2023. 11. 30. 02:45
let a = "";
if (a) {
console.log("TRUE");
} else {
console.log("FALSE");
}
// FALSE가 출력된다.
// 조건식에 a처럼 변수를 입력했다.
// a는 true도 false도 아닌 string 이란 자료형으로 이루어져있다.
// 빈 문자열 string을 가진 a라는 변수를 if문의 조건식에 넣으면 거짓으로 인지한다.
let a = []; // TRUE
let a = undefined // FALSE
// 위와 같은 값이 나오는 특이한 성질을 가지고 있다.
// 자바스크립가 자신만의 특정한 기준으로 갑슬 참이나 거짓으로 분류하는
// Truthy 와 Falsy 개념을 알아보자. ( 그 자신만의 기준이란? )
let a = [];
// = {};
// = 12;
// = "0";
// = "false";
// = Infinity;
// 위와 같이 true가 아니여도
// 참으로 분류하는 자바스크립트이 값들을 참값은 값.
// Truthy 라고 부른다.
let a = null;
// = undefined;
// = 0;
// = -0;
// = NaN;
// = "";
// Falsy한 값들의 대표.
// 이러한 사례들을 코딩할 때 활용하기 좋은 성질이다.
이러한 개념을 어떻게 활용할 것인지. 함수를 통한 프로그램으로 알아보자.
객체를 매개변수로 받아서 받은 객체에서 특정한 프로퍼티를 반환하는 함수를 포함한 프로그래밍이다.
const getName = (person) => {
return person.name;
};
let person = { name: "이수광" };
const name = getName(person);
console.log(name);
// 문제없이 작동한다.
// ------------------------------------------------------------
const getName = (person) => {
return person.name;
};
let person;
const name = getName(person);
console.log(name);
// 프로퍼티를 undefined 라 읽을 수 없다 오류가 뜬다.
// undefined에 점 표기법 person.name 을 사용했기 때문.
// undefined는 객체가 아니기 때문에 내부 프로퍼타애 접근이 불가능하다.
// 이러한 상황에서 우린 조건문을 통해 전달받은 파리미터가 객체인지
// 또는 undefined 나 null 이 아닌지 판단해줘야 한다.
// ------------------------------------------------------------
const getName = (person) => {
if (person === undefined || null) {
return "객체가 아님";
}
return person.name;
};
let person;
const name = getName(person);
// console.log(name); // 객체가 아님.
// 위와 같이 person 이 undefined나 null일 경우 "객체가 아님"
// 을 반환하고 멈추기 때문에 오류를 내지 않는다.
// 모든 함수마다 파라미터가 undefined와 null이 아니라는 것을
// if 문으로 예외처리하기는 힘들다.
// 그래서 Falsy 속성을 이용해서 쉽게 해결한다.
// ------------------------------------------------------------
const getName = (person) => {
if (!person) {
// false 에 NOT(!)을 붙이면 true
return "객체가 아님";
}
return person.name;
};
let person;
const name = getName(person);
console.log(name); // 객체가 아님.