단축 평가(Short Circuit Evaluation)

verdantgreeny·2025년 1월 20일

본캠프

목록 보기
27/56

단축 평가

  • 단축평가는 논리 연산자를 사용하여 조건문을 처리할 때, 전체 표현식을 평가하지 않고 최소한의 평가로 결과를 도출하는 방식을 말한다.

1. 논리합(||) 연산자

앞의 값이 truthy, falsy(falsy한 값 : false, 0, "", null, undefined, NaN)한지에 따라 뒤의 값을 평가한다. 앞의 값이 falsy한 값일 경우 일 때 우변의 피연산자 값이 반환되고, 앞의 값이 truthy한 값일 경우, 그 값이 바로 결과값으로 반환된다.

// 유저 정보가 제공되지 않았을 때 기본 이름 제공
function getUsername(user) {
    return user.name || '신원미상';
}

console.log(getUsername({ name: 'verdantgreeny' })); //verdantgreeny
console.log(getUsername({})); //신원미상

2. 논리곱(&&) 연산자

논리곱 연산자는 앞의 값이 truthy일 때만 우변의 값을 반환한다.

// 사용자가 로그인 상태이면 환영 메시지를 출력
let loggedIn = true;
let username = 'verdantgreeny';
loggedIn && console.log('환영합니다! ' + username); //환영합니다! 르탄이

loggedIn = false;
loggedIn && console.log('환영합니다! ' + username); //아무것도 출력되지 않음

3. Optional Chaining(?.)

객체의 속성에 접근할 때 속성이 null 혹은 undefined인 경우 에러를 발생시키지 않고, undefined를 반환한다. 오류를 발생시키지 않기 때문에, 객체의 중첩된 속성에 안전하게 접근할 수 있다.

const data = {
  user: {
    name: 'verdantgreeny',
    details: {
      age: 30,
      location: "서울",
    }
  },
  greet: function() {
    return 'Hello!';
  }

};

// Optional Chaining 사용
console.log(data.user?.details?.age); // 30
console.log(data.user?.details?.language); // undefined
console.log(data.admin?.details?.age); // undefined
console.log(data.greet?.()); // 'Hello!' 
console.log(data.goodbye?.()); // undefined 

Optional Chaining의 장점

  1. if문을 줄여준다.
  2. nullish연산자와 함께 쓰면 기본값 주기에 용이하다.
  3. 대괄호 표기법에도 사용이 가능하다.
  4. 존재하지 않을 수도 있는 메서드를 호출할 때 유용하다.

4. Null 병합 연산자(??)

?? 연산자는 좌변이 null이나 undefined일 경우에만 우변을 평가한다. null 또는 undefined가 아닌 falsy 값들을 유효한 값으로 처리하고 싶을 때 사용된다.

// 사용자의 위치 설정이 없으면 기본 위치를 제공
let userLocation = null;
console.log(userLocation ?? 'Unknown location');  // 출력: Unknown location

userLocation = 'Seoul';
console.log(userLocation ?? 'Unknown location');  // 출력: Seoul

// 사용자 입력이 0인 경우에도 0을 유효한 값으로 취급
const temperature = 0;
console.log(temperature ?? 25);  // 출력: 0

0개의 댓글