const getName = (person) => {
const name = person && person.name;
return name || "Not object";
};
let person = {name: "Chael"};
const name = getName(person);
console.log(name);
콘솔창에 name띄워야하므로 person에 대해 getName이 시행될 것이다.
let person은 값이 존재하므로 truthy한 상태이다.
따라서 const name = person && person.name 에서 truthy && truthy한 상태가 된다. 이 경우, 가장 뒷편에 있는 person.name이 호출된다. 즉, const name은 Chael이 된다. 그런 뒤에 truthy||truthy의 경우, 앞의 값이 호출되므로 name인 Chael 이 호출된다.
const getName = (person) => {
const name = person && person.name;
return name || "Not object";
};
let person = null;
const name = getName(person);
console.log(name);
한편 위의 경우, person은 falsy하다. getName에서 name은 falsy&&falsy를 가지게 되어 false를 반환하고, name||"Not object"에서 name이 false이므로 "Not object"를 콘솔에 띄우게 된다.