https://ko.javascript.info/logical-operators
자바스크립트엔 세 종류의 논리 연산자 ||(OR), &&(AND), !(NOT)이 있다.
result = a || b;
OR 연산자는 이항 연산자이므로 아래와 같이 네 가지 조합이 가능하다.
alert(true || true); // true
alert(false || true); // true
alert(true || false); // true
alert(false || false); //false
피연산자가 모두 false인 경우를 제외하고 연산 결과는 항상 true이다.
피연산자가 불린형이 아니면, 평가를 위해 불린형으로 변환된다.
숫자 1은 true로, 숫자 0은 false로 바뀐다.
OR 연산자와 피연산자가 여러 개인 경우 :
result = value1 || value2 || value3;
OR 연산자는 다음 순서에 따라 연산을 수행한다.
여기서 핵심은 반환 값이 형 변환을 하지 않은 원래 값이라는 것이다.
정리) OR "||" 연산자를 여러 개 체이닝하면 첫 번째 truthy를 반환한다.
피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환한다.
alert(1 || 0); // 1 ( 1은 truthy)
alert(null || 1); // 1 (1은 truthy)
alert(null || 0 || 1); // 1
alert(undefined || null | 0); // 0 (모두 falsy이므로, 마지막 값을 반환함)
result = a && b;
alert(true && true); // true
alert(false && true); // false
alert(true && false); // false
alert(false && false); // false
result = value1 && value2 && value3;
AND 연산자 &&는 아래와 같은 순서로 동작한다.
정리) AND 연산자는 첫 번째 falsy를 반환한다.
피연산자에 falsy가 없다면 마지막 값을 반환한다.
alert(1 && 0); // 0
alert(1 && 5); // 5
alert(null && 5); // null
alert(0 && "아무거나 와도 상관없음"); // 0