본문 바로가기

자바스크립트

[모던자바스크립트 Deep Dive] 9.4 단축평가

단축평가란 논리곱(&&) 연산자와 논리합(||)를 이용해 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지평가 과정을 생략하는 것을 의미한다.

//논리합(||) 연산자
"Cat" || "Dog" // "Cat"
false || "Dog" // "Dog"
"Cat" || false // "Cat"

//논리곱(&&) 연산자
"Cat" && "Dog"	// "Dog"
false && "Dog"	// false
"Cat" && false	// false

 

단축 평가는 다음의 두 가지 경우에서 유용하게 사용된다.

  1. 객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 잠조할 때
  2. 함수 매개변수에 기본값을 설정할 때

 

 

 

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

객체를 가리키기를 기대하는 변수의 값이 객체가 아니라 null 또는 undefined인 경우 객체의 프로퍼티를 참조하면 에러가 발생하는데 단축평가를 사용하면 에러를 발생시키지 않는다.

 

var elem = null;
var value = elem.value;	//TypeError : Cannot read property 'value' of null

var elen = null;
//elen이 null이나 undefined와 같은 Falsy 값이면 elen으로 평가되고
//elen이 Truthy 값이면 elen.value로 평가된다.
var value = elen && elen.value;	//null

 

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

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

//단축 평가를 사용한 매개변수의 기본값 설정
function getStringLength(str) {
	str = str || '';
    return str.length;
}

getStringLength();	//0
getStringLength('hi')	//2

//ES6의 매개변수 기본값 설정
function getStringLength(str = '') {
    return str.length;
}

getStringLength();	//0
getStringLength('hi')	//2

그냥 넘어가려고 하다가 나중 코드 구현에서 유용하게 사용할 것 같아서 남겨본다..!