2024. 5. 14. 18:22ㆍJavascript
and나 or 같은 논리연산식에서 첫 번째 피연산자 값만으로도 답을 확정할 수 있으면 두 번째 값은 접근하지 않는 특징
function funcFalse() {
console.log("False 함수 입니다");
return false;
}
function funcTrue() {
console.log("True함수 입니다");
return true;
}
console.log(funcFalse() && funcTrue());
라는 함수와 연산식이 존재할 때 결과값을 예상해 보면
False 함수입니다
True함수입니다
False 일 거 같지만 실제 결괏값은
False 함수입니다
false
Why? 단락 평가가 작동했기 때문에
and 연산식에서 첫 번째 피연산자 값이 false라 뒤에와 상관없이 연산식 결과가 false → 두 번째 피연산자는 처리도 안 함
그러면 위에 함수에서 두 연산자의 자리를 바꾼다면?
console.log( funcTrue() && funcFalse() );
첫 번째 피연산자 값만으로 전체 결과를 예상할 수 없음 → 단락 평가가 작동하지 않음
결괏값은
True함수입니다
False 함수 입니다
false
단락평가는 Falsy와 Truthy값에도 적용됨
이거 도대체 언제 사용해..?
바로 전 글의 사례를 그대로 가져오면
function userName(user) {
console.log(user.name);
}
let user; = { name: "mm_스터디" };
userName(user);
이때 name을 사용자가 제대로 작성 안 하거나, 오류로 값이 제대로 저장되지 않는 걸 확인하기 위해 아래의 함수를 짬
function userName(user) {
if (!user) {
console.log("user의 값이 올바른 값이 아님");
return;
}
console.log(user.name);
}
위의 식을 단락 평가 활용하면 더 간결하게 표현 가능
function userName(user) {
const name = user && user.name;
console.log(name || "name의 값이 없음");
}
userName ();
'Javascript' 카테고리의 다른 글
[Javascript] Spread 연산자와 Rest 매개변수 (0) | 2024.05.16 |
---|---|
[Javascript] 구조 분해 할당 (0) | 2024.05.15 |
[Javascript] Truthy 와Falsy (0) | 2024.05.13 |
[Javascript] 배열 (0) | 2024.05.12 |
[Javascript] 객체 (0) | 2024.05.11 |