Javascript
기본 - 논리 연산자
big whale
2021. 7. 1. 17:34
첫 번째 truthy를 찾는 OR 연산자 ||
result = value1 || value2 || value3;
가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
각 피연산자를 불린형으로 변환한다. 변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
피연산자 모두를 평가한 경우(모든 피연산자가 false로 평가되는 경우)에는 마지막 피연산자를 반환한다.
alert(1||0); // 1 (1은 truthy임)
alert(undefined || null || 0); // 0 (모두 falsy이므로, 마지막 값을 반환함)
활용법
1. 변수 또는 표현식으로 구성된 목록에서 첫 번째 truthy 얻기
let firstName = '';
let lastName = '';
let nickName = '바이올렛';
alert(firstName || lastName || nickName || '익명'); // 바이올렛
2. 단락 평가
두 번째 피연산자가 변수 할당과 같은 부수적인 효과를 가지는 표현식일 때 유용하다.
true || alert('not printed');
false || alert('printed');
첫 번째 falsy를 찾는 AND 연산자 '&&'
result = value1 && value2 && value3;
AND 연산자는 첫 번째 falsy를 반환한다.
피연산자에 falsy가 없다면 마지막 값을 반환한다.
문제
alert( alert(1) || 2 || alert(3));
얼럿 창에 1이 출력되고 alert(1)의 반환값이 undefined라서 OR연산자는 다음 피연산자를 평가하게 되고 2는 truthy라서 실행이 멈추고 2가 반환된다. 반환된 값 2는 제일 바깥 alert의 피연산자가 되어 두 번째 얼럿 창에 출력된다.
병합 연산자 '??'
a ?? b : a가 null, undefined 둘다 아니면 a를 반환, 그렇지 않으면 b를 반환.