OR 연산자의 피연산자가 alert 라면?
중요도: 3
아래 코드의 결과를 예측해 보세요.
alert( alert(1) || 2 || alert(3) );
얼럿 창엔 1
, 2
가 차례대로 출력됩니다.
alert( alert(1) || 2 || alert(3) );
alert
메서드는 값을 반환하지 않습니다. 즉, undefined
를 반환하죠.
- 첫 번째 OR
||
은 왼쪽 피연산자인alert(1)
를 평가합니다. 이때 첫 번째 얼럿 창에1
이 출력되죠. alert
메서드는undefined
를 반환하기 때문에, OR 연산자는 다음 피연산자를 평가하게 됩니다. truthy를 찾기 위해 말이죠.- 두 번째 피연산자(오른쪽 피연산자)인
2
는 truthy이기 때문에 실행이 멈추고2
가 반환됩니다. 반환된 값2
는 제일 바깥alert
의 피연산자가 되어 두 번째 얼럿 창에 출력됩니다.
평가가 alert(3)
까지 진행되지 않기 때문에 3
은 출력되지 않습니다.