[JavaScript] 단축 평가

zmin·2022년 4월 4일
0
post-thumbnail

모던 자바스크립트 Deep Dive, 이웅모

논리 연산자 &&||의 경우 연산 우선 순위가 거의 뒤쪽
→ 각 항에 연산자를 포함하는 표현식이 있더라도 보통 해당 연산 결과를 가지고 논리연산을 함

c++의 경우 아래처럼 논리 연산의 결과 boolean으로 연산되어 나타남



똑같은 연산을 자바스크립트에서 실행하게 되면
연산자의 우항인 "Hello World"가 출력되는 것을 볼 수 있음

기본적으로 불리언 타입으로 암묵적 타입 변환을 통해 논리연산을 진행하는 것은 같음, boolean타입이 아니더라도 연산에서 오류X

단축평가 규칙

암묵적 타입 변환을 통해 연산한 뒤
양쪽의 값 중에서 해당 논리 연산의 결과를 결정지을 수 있는 항의 값으로 평가 (타입 변환 이전의 값)

논리 연산자의 경우 표현식을 앞에서부터 읽어가며
true false를 판단하여 값을 냄

단축평가 표현식평가 결과설명
true && anythinganythinganything의 값에 따라 표현식의 값이 바뀜
false && anythingfalseand 연산이므로
이미 false에서 표현식이 거짓이라는 것을 판별
true||anythingtrue이미 true에서 표현식이 참이라는 것을 판별
anything이 무엇인지 볼 필요 없음
false||anythinganythingor 연산이므로
anything의 값에 따라 표현식의 값이 바뀜

이때 좌항의 true false가 실제 불리언 값이 무조건 들어가야 한다는 뜻X
타입 변환하여 확인했을 때 해당 값이라면~~ 으로 생각

이를 이용해
1. null이나 undefined인 변수에 프로퍼티 접근 시 에러 없이 null값 반환
2. 함수 매개변수 기본값 설정
등을 할 수 있다.

2의 경우 ES6에서 함수 매개변수 기본값을 설정 할 수 있게되어 해당 기능을 이용하면 되겠지만 이전 버전일 경우 단축 평가를 이용하여 기본값을 지정할 수 있음

// ES6 이전 : 단축평가 이용
function test (value) {
  value = value || 0;
  // 인수가 없는 경우 value는 undefined → 단축평가에 의해 0 할당
  ...
}

  
  
// ES6부터
function test (value=0) {
  // 인수가 없는 경우 value에 기본값 0 사용
  ...
}
profile
308 Permanent Redirect

0개의 댓글