왼쪽에서 오른쪽으로 연산하게 되는 논리연산자의 순서를 이용하는 문법
//*and 연산자*
console.log(false && true);
// and 연산자는 모든 피연산자가 true일때 true가 나온다.
// 첫번째 피연산자가 false이기에 두번쨰 피연산자를 볼 필요도 없이 false가 나온다.
// 피연산자 중에 뒤에 오는 피연산자를 확인할 필요 없이 연산을 끝내버리는 것을 보고
// 단락회로 평가라고 한다.
//*or 연산자 *
console.log(true || false);
// or 연산자는 피연산자중에서 하나만 true여도 true가 나온다.
// 첫번쨰 피연산자가 true이기 떄문에 두번째 피연산자를 볼 필요도 없이 true 나온다.
// or 연산자에도 단락회 평가가 이루어진다.
//*truthy, falsy 예시 1*
const getName = (person) => {
return person && person.name;
// person의 값이 falsy값인 undefined이기 때문에 person.name에도 접근하지 않고
// 콘솔에 undefined를 출력한다.
};
let person
const name = getName(person);
console.log(name);// undefined
//*truthy, falsy 예시 2*
const getName = (person) => {
const name = person && person.name;
// person의 값도 truthy하고 person.name도 truthy하기에
// name에 person.name의 값인 '김효영'이 저장된다.
return name || "객체가 아닙니다."
// 앞의 값이 truethy하기 떄문에 or연산자에서는 뒤에것을 보지 않고
// name에 저장된 값인 '김효영'이 출력된다.
};
let person= {name:"김효영"}
const name = getName(person);
console.log(name);
//*truthy, falsy 예시 3*
const getName = (person) => {
const name = person && person.name;
// person 값은 falsy이기에 name에는 undefined가 저장됨
return name || "객체가 아닙니다."
// name의 값이 undefined이기 때문에 falsy하기에 or연산자에서 뒤에 것까지 봐야한다.
// 뒤의 값이 truthy하기 떄문에 뒤의 "객체가 아닙니다."가 출력된다.
};
let person
const name = getName(person);
console.log(name);