단축평가란 논리곱(&&) 연산자와 논리합(||)를 이용해 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지평가 과정을 생략하는 것을 의미한다.
//논리합(||) 연산자
"Cat" || "Dog" // "Cat"
false || "Dog" // "Dog"
"Cat" || false // "Cat"
//논리곱(&&) 연산자
"Cat" && "Dog" // "Dog"
false && "Dog" // false
"Cat" && false // false
단축 평가는 다음의 두 가지 경우에서 유용하게 사용된다.
- 객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 잠조할 때
- 함수 매개변수에 기본값을 설정할 때
객체를 가리키기를 기대하는 변수가 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
그냥 넘어가려고 하다가 나중 코드 구현에서 유용하게 사용할 것 같아서 남겨본다..!
'자바스크립트' 카테고리의 다른 글
[모던자바스크립트 Deep Dive] 10. 객체 리터럴 (0) | 2021.09.30 |
---|---|
[모던자바스크립트 Deep Dive] 옵셔널 체이닝 연산자와 null 병합 연산자 (0) | 2021.09.26 |
[모던자바스크립트 Deep Dive] 변수(Variable) (0) | 2021.09.20 |
React를 사용하는 이유??? (0) | 2021.09.05 |
[JavaScript] 자료의 파괴와 비파괴 (0) | 2021.07.20 |