들어가며

console.log('Cat' && 'Dog');
console.log('Cat' || 'Dog');

// 실행결과
Cat
Dog

 

왜지?

 

 

 

단축평가

  • 논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환한다.
  • 표현식을 평가하는 도중에 평가 결과가 확정된 경우, 나머지 평가 과정을 생략한다.
  • 논리곱 연산자는 두 번째 피연산자가 표현식의 평가 결과를 결정한다.
  • 논리합 연산자는 첫 번째 피연산자가 표현식의 평가 결과를 결정한다.

 

 

 

단축평가의 유용한 패턴

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

만약 객체를 가리키기를 기대하는 변수의 값이 객체가 아니라 null 또는 undefined인 경우, 객체의 프로퍼티를 참조하면 타입 에러가 발생하며 프로그램이 강제 종료된다.

 

var elem = null;

var value = elem.value;  // TypeError: Cannot read property 'value' of null
console.log(value);

 

이때 단축 평가를 사용하면 에러를 발생시키지 않는다.

var elem = null;

var value = elem && elem.value;
console.log(value);

 

 

 

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

함수를 호출할 때 인수를 전달하지 않으면 매개변수에는 undefined가 할당된다. 이때 단축 평가를 사용해 매개변수의 기본값을 설정하면 undefined로 인해 발생할 수 있는 에러를 방지할 수 있다.

 

예제 1 (단축 평가를 사용한 매개변수의 기본값 설정)

function getStringLength(str) {
  str = str || '';
  return str.length;
}

console.log(getStringLength());
console.log(getStringLength('hi'));

 

예제 2 (ES6의 매개변수의 기본값 설정)

function getStringLength(str = ''){
  return str.length;
}

console.log(getStringLength());
console.log(getStringLength('hi'));

 

 

 

728x90
반응형