단락 할당(Short-circuit Assignment)은 논리 연산자의 단락 평가(Short-circuit Evaluation) 특성을 활용해 변수에 값을 할당하는 JavaScript 기법입니다. 표현식은 왼쪽부터 차례로 평가되며, 연산 결과가 확정되는 순간 나머지 피연산자는 더 이상 평가되지 않습니다.
핵심 개념
- OR 연산자(||): 처음 만나는 참(truthy) 값을 즉시 반환하며, 뒤쪽 피연산자는 평가하지 않습니다.
- AND 연산자(&&): 처음 만나는 거짓(falsy) 값을 즉시 반환하며, 뒤쪽 피연산자는 평가하지 않습니다.
JavaScript에서는 0, null, undefined, NaN, 빈 문자열('')이 거짓(falsy) 값으로 처리되고, 0이 아닌 숫자는 모두 참(truthy) 값으로 처리된다는 점을 기억해 두세요.
예제 코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result,
.sample {
font-size: 20px;
font-weight: 500;
color: blueviolet;
}
.sample {
color: red;
}
</style>
</head>
<body>
<h1>Short-circuit assignment</h1>
<div class="sample">a=22 || 0 || 0<br />b=0 && 22 && 22</div>
<div class="result"></div>
<br />
<button class="Btn">Click Here</button>
<h3>Click on the above button to see the values of variable a and b in the above expression</h3>
<script>
let resEle = document.querySelector(".result");
let BtnEle = document.querySelector(".Btn");
BtnEle.addEventListener("click", () => {
let a, b;
a = 22 || 0 || 0;
b = 0 && 22 && 22;
resEle.innerHTML = "a = " + a + "<br>";
resEle.innerHTML += "b = " + b + "<br>";
});
</script>
</body>
</html>실행 결과

"Click Here" 버튼을 클릭하면 위 표현식이 평가되어 변수 a와 b의 값이 화면에 출력됩니다. a = 22 || 0 || 0은 첫 번째 피연산자인 22가 참(truthy)이므로 즉시 평가가 종료되고 a에는 22가 할당됩니다. 반면 b = 0 && 22 && 22는 첫 번째 피연산자인 0이 거짓(falsy)이므로 뒤의 값들은 무시되고 b에는 0이 할당됩니다. 즉, 0은 거짓(falsy)으로, 0이 아닌 숫자는 참(truthy)으로 평가된다는 점이 핵심입니다.
