Java Script

Growing_HJ·2024년 7월 1일

일기장

목록 보기
37/51

20240701 MON
1. Truthy, falsy

  • Undefined, null, 0,-0,NaN, "".`` 는 조건식에서 false 로 평가한다
  • 실제로 false 값은 아니지만, false 처럼 보고 처리한다.
if (!undefined) {
  // undefined -> false 로 봄 .
  console.log(" 1. falsy 한 값임. ");
}
if (!null) {
  console.log(" 2. falsy 한 값임. ");
}
if (!0) {
  console.log(" 3. falsy 한 값임. ");
}
if (!-0) {
  console.log(" 4. falsy 한 값임. ");
}
if (!NaN) {
  console.log(" 5. falsy 한 값임. ");
}
if (!"") {
  console.log(" 6. falsy 한 값임. ");
}

if (!``) {
  console.log(" 7. falsy 한 값임. ");
}

console.log("-- truthy, falsy 활용 --");
let varA;
if (varA) {
  console.log(" 값이 있음. ");
} else {
  console.log(" 값이 없음.  ");
}
  • truthy, falsy 사용 장소
    단락 평가에서 활용 : 논리 연산에서 처리를 지름길로 수행할 수 있도록 함.
  1. AND (&& - 하나라도 거짓이면 거짓을 반환)
  • 앞의 피연산자가 false 이면 뒤의 피연산자는 볼 필요도 없다는 의미
  1. OR (|| - 하나라도 참이면 참을 반환)
  • 앞의 피연산자가 true 이면 뒤 피연산자는 볼 필요도 없다는 의미.
function calcA() {
  console.log("a");
  return false;
}
function calcB() {
  console.log("b");
  return true;
}
console.log(calcA() && calcB());
  • 단락 평가 + truthy false
    -> truthy false에 해당되는 값이면 그대로 반환.
console.log("단락평가 + truthy false");
function calcA2() {
  console.log("a");
  return undefined; // falsy
}
function calcB2() {
  console.log("b");
  return true;
}
console.log(calcA() && calcB());
  • 객체 + 단락평가 + truthy + falsy
console.log("객체 + 단락평가 + truthy + falsy");
function getName(person) {
  if (person !== undefined && person !== null) {
    return person.name;
  } else {
    return " 존재하지 않는 객체 정보임 ";
  }
}
let person2; // 객체 생성 완
let name2 = getName(person2);

let person3 = null; // 객체 생성 완
let name3 = getName(person3);
  • 모든 객체에 대해서 null, undefined 체크를 하는 것이 부담이 됨
  • 객체 + 단락평가 + truthy + falsy
function getName3(person) {
  return person && person.name;
  // person이 null 인 경우 => false
  // person.name 이 undefined => false
}
let person4 = { name: "홍" }; // 리터럴 객체

let name1 = getName3(undefined);
console.log(name1);

name1 = getName3(null);
console.log(name1);

name1 = getName3(person4);
console.log(name1);

0개의 댓글