티스토리 뷰

728x90
반응형

단락 회로 평가


논리 연산자 (&& , ||) 를 사용하여 연산을 진행 할 때 좌측 식의 값에 따라 우측 식의 실행 여부를 판단하는 동작을 단락 회로 평가라고 한다.

 

예제


getName = (param) => {
	if(!param){
    	return "객체가 아닙니다.";
    }
    
    return param.name;
}

위 소스를 단락 회로 평가를 사용해서 간단히 표현 할 수 있다.

getName = (param) => {
	const name = param && param.name;
    return name || "객체가 아닙니다.";
}

단락 회로 평가를 사용한 함수를 통해 param의 값에 따라 getName을 호출 했을 때 결과는 다음과 같다.

let person = "";
console.log(getName(person));	//객체가 아닙니다.

person = null;
console.log(getName(person));	//객체가 아닙니다.

person = undefined;
console.log(getName(person));	//객체가 아닙니다.

person = 0;
console.log(getName(person));	//객체가 아닙니다.

person = NaN;
console.log(getName(person));	//객체가 아닙니다.

person = [];
console.log(getName(person));	//객체가 아닙니다. (첫번째 getName 함수로 호출할 경우 undefined)

person = {};
console.log(getName(person));	//객체가 아닙니다. (첫번째 getName 함수로 호출할 경우 undefined)

 

여기서 첫번째 함수와 단락회로 평가를 사용한 두번째 함수의 차이점은 빈 객체와 빈 배열의 return 값이 다르다는 것이다. 두번째 함수에서 빈 객체 또는 빈 배열을 param으로 넘겼을 경우, param.name의 값(undefined) 가 name 값이 되고, name(nudfined) || "객체가 아닙니다." 연산을 하게 되면 undefined가 falsy 이기 때문에 "객체가 아닙니다" 가 출력 된다.

 

참고

728x90
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함