[9장] 단축 평가 - 논리 연산자를 사용한 단축 평가

    📂9장 타입 변환과 단축 평가

     

    단축 평가

    • 단축 평가 : 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것.

    논리 연산자를 사용한 단축 평가

      • 규칙
        • true || anyting => true
        • false || anyting => anything
        • true && anyting => anything
        • false && anyting => false
      • 설명
    true || anyting => true
    • || 논리합 연산자의 1개의 피연산자만 true여도 true를 반환함.
    • 좌항이 true임으로 우항을 볼 필요없이 true

     

    false || anyting => anything

    • 좌항이 false임으로 우항값 반환

     

    true && anyting => anything

    • && 논리합 연산자는 2개의 피연산자 모두 true이면 true를 반환함.
    • 좌항이 true임으로 우항값 반환

    false && anyting => false

    • 좌항이 false임으로 우항을 볼 필요없이 false

    단축 평가 활용

    if문 대체하기

    • Truthy 값일때는 && 논리곱 연산자 활용하기
    • Falsy 값일때는 || 논리합 연산자 활용하기
      var done = ture;
      var message = '';
      if(done) message = '완료';
      else message = "미완료"
      
      // 단축평가 활용하기
      message = done && "완료"
      //done이 false일때 코드 생략
      message = done || "미완료"
      
      // 삼항연산자로 if...else 표현하기
      message = done ? "완료" : "미완료"

    객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할때

    • 객체는 {키 : 값} 으로 구성된 프로퍼티의 집합임.
    • 만약 객체를 카리키는 변수의 값이 null 또는 undefined인 경우 타입 에러 발생
    • 단축 평가를 이용하면 에러를 발생하지 않음.

    const elem = null;
    const value = elem.value // typeError
    
    //단축 평가 활용하기
    const elem = null;
    const value = elem && elem.value // null

    const value = elem && elem.value

    • null이나 undefined이면 false임.
    • elem(=>false) && elem.value 이니깐 elem값을 반환함 => null
    • 만약 elem이 true이면 elem(=>true) && elem.value 이니깐 elem.value값을 반환함

    함수 매개변수에 기본값을 설정할때

    • 함수 호출시 인수를 전달하지 않으면 매개변수에 undefined가 할당됨.
    • 이를 방지하여 단축평가를 활용해 기본값을 설정함.
    function double(num) {
    num = num || 0;
    return num*num
    }
    double() // 0
    double(5) //25
    
    // ES6의 매개변수의 기본값 설정
    function double(num = 0) {
    return num*num
    }
    double() // 0
    double(5) //25

    [모던 자바스크립트 Deep Dive, ⌜이웅모 ⌟, 위키북스, 20210103]를 읽고 정리한 글입니다.

    '개발언어 > [JS] deep-dive 정리' 카테고리의 다른 글

    [10장] 객체 리터럴  (0) 2022.12.14
    [9장] 단축평가 - 옵셔녈 체이닝 연산자와 null 병합 연산자  (0) 2022.12.12
    [9장] 타입 변환  (0) 2022.12.12
    8장 제어문  (2) 2022.12.10
    6장 데이터 타입  (0) 2022.12.07

    댓글