acc[curr] = (acc[curr] || 0) + 1;
JavaScript의 논리 연산자(||)의 특성을 활용한 매우 간결하고 효과적인 패턴입니다.
이를 "단축 평가(short-circuit evaluation)"라고 부르기도 합니다.
이 패턴의 작동 원리를 더 자세히 설명해 드리겠습니다:
- 논리 OR 연산자(||)의 특성:
- JavaScript에서 ||는 왼쪽 피연산자가 truthy면 왼쪽 피연산자를 반환합니다.
- 왼쪽 피연산자가 falsy면 오른쪽 피연산자를 반환합니다.
- Falsy 값:
- JavaScript에서 falsy 값은 false, 0, '', null, undefined, NaN입니다.
- 객체의 존재하지 않는 속성에 접근하면 undefined를 반환합니다.
- 이 패턴의 동작:
- acc[curr]가 존재하면(즉, 0이 아닌 양수), 그 값을 사용합니다.
- acc[curr]가 undefined(아직 카운트되지 않은 경우)이면, 0을 사용합니다.
이 패턴은 다음과 같은 if-else 문을 대체합니다:
if (acc[curr] !== undefined) {
acc[curr] = acc[curr] + 1;
} else {
acc[curr] = 0 + 1;
}
이 패턴의 장점:
- 코드 간결성: 여러 줄의 코드를 한 줄로 압축
- 가독성: 익숙해지면 의도를 빠르게 파악 가능
- 성능: 조건문 없이 동작하므로 약간의 성능 이점
이러한 패턴은 JavaScript에서 자주 사용되며, 특히 객체의 속성을 안전하게 접근하거나 기본값을 설정할 때 유용합니다. 처음에는 낯설 수 있지만, JavaScript 개발에서 자주 마주치게 되는 관용적인 표현 중 하나입니다.
'프로그래밍 > Js' 카테고리의 다른 글
indexedDB 기초 사용법 (0) | 2024.10.07 |
---|---|
Array.reduce 여러가지 사용 사례 (0) | 2024.08.27 |
제네레이터(generator) 의 실무 적용 (0) | 2024.08.23 |
이기종간 데이터 변환(한글) 전문에 한글 전송 방법 (0) | 2024.08.22 |
vue3 부모->자식 자식->부모 데이터 전달방법 (0) | 2024.08.12 |