&&, ||)를 사용할 때, 연산을 최적화하여 불필요한 계산을 방지하는 기법이다.true && func()에서 func()는 평가되지 않는다.&&)와 단락 평가왼쪽 피연산자가 false일 경우, 오른쪽은 평가하지 않고 바로 반환
예시: false && func()에서 func()은 실행되지 않는다.
let varA = false;
let varB = true;
console.log(varA && varB); // false
||)와 단락 평가왼쪽 피연산자가 true일 경우, 오른쪽은 평가하지 않고 바로 반환
예시: true || func()에서 func()은 실행되지 않는다.
let varA = false;
let varB = true;
console.log(varA || varB); // true
if (x || y) {}와 같이 사용x && y()와 같은 형태로 조건부 함수 호출undefined나 null을 처리할 때: const name = userName || "Guest";true && func()과 같은 코드에서 func()가 실행되지만, 예상치 못한 부작용을 일으킬 수 있다.&&와 ||의 결합 시, 단락 평가의 순서가 예상과 다를 수 있다.&&)와 OR(||)function returnFalse() {
console.log("False 함수");
return false;
}
function returnTrue() {
console.log("True 함수");
return true;
}
console.log(returnFalse() && returnTrue());
// ✅ 결과
// False 함수 실행
// false
console.log(returnTrue() && returnFalse());
// ✅ 결과
// True 함수 실행
// False 함수 실행
// false
console.log(returnFalse() || returnTrue());
// ✅ 결과
// False 함수 실행
// True 함수 실행
// true
console.log(returnTrue() || returnFalse());
// ✅ 결과
// True 함수 실행
// true
function returnFalse() {
console.log("False 함수");
return undefined;
}
function returnTrue() {
console.log("True 함수");
return 10;
}
console.log(returnTrue() || returnFalse());
// ✅ 결과
// True 함수 실행
// 10
console.log(returnFalse() || returnTrue());
// ✅ 결과
// False 함수 실행
// True 함수 실행
// true
// 조건문 사용
function printName(person) {
if (!person) {
console.log("person에 값이 없음");
return;
}
console.log(person.name);
}
printName(); // person에 값이 없음
function printName(person) {
console.log(person && person.name);
}
printName(); // undefined
function printName(person) {
const name = person && person.name;
console.log(name || "person에 값이 없음");
}
printName(); // person에 값이 없음
printName({ name: "ttining" }); // ttining
console.log("Hello" || "World"); // Hello
console.log("Hello" && "World"); // World
T || T (첫 번째 truthy한 값)T && T (두 번째 truthy한 값)A || B: 첫 번째 Truthy 값(A) 반환A가 Truthy면 A 반환A가 Falsy면 B 평가 및 반환A && B: 두 번째 Truthy 값(B) 반환A가 Falsy면 A 반환A가 Truthy면 B 평가 및 반환