// 논리 (Logical)
const a = true;
const b = false;
● AND (그리고) 연산자 &&
→ 둘 중에 하나라도 거짓이면 실행되지 않음.
if (a && b) {
console.log("모두가 참!");
}
// 아무것도 출력되지 않음.
● OR (또는) 연산자 ||
→ 둘 중에 하나만 참이여도 실행.
if (a || b) {
console.log("하나 이상이 참!");
}
// 하나 이상이 참!
AND (&&) 연산자
// AND 연산자
→ 코드의 왼쪽에서 오른쪽으로 가면서 제일 먼저 만나는 '거짓' 데이터를 반환한다.
console.log(true && false); // false (둘 다 참이 아니다.)
console.log(1 && 0); // 0
그리고 (&&) 연산자를 사용할 때, 단순하게 true, false의 값만 나오는게 아니고
가운데에 있는 연산자를 기준으로 좌우에 있는 피연산자가 반환될 수도 있다.
숫자 1이라는 것은 참이기 때문에 반환하지 않고, && (그리고) 연산자를 지나서 숫자 0을 만났는데
숫자 0은 거짓에 해당되기 때문에 숫자 0이 반환된다.
console.log(1 && 2 && 0); // 0
왼쪽부터 숫자 1은 참, 숫자 2는 참, 숫자 0은 거짓이기 때문에 제일 먼저 만난 숫자 0이 반환이 되는 것.
console.log(1 && 0 && 2); // 0
왼쪽에서부터 숫자 1은 참이고 숫자 0은 거짓이니까 반환이 안됨.
console.log(0 && 1 && 2); // 0
console.log("A" && "B" && ""); // 빈 문자열 출력
마지막에 빈 문자열은 거짓이니까 빈 문자열 반환함.
console.log("A" && "B" && "C"); // C
전부 다 비어있지 않은 문자이기 때문에 참.
C 에서 마무리 되기 때문에, 모두가 참이면 가장 마지막 참 데이터 C가 반환이 됨.
→ 결과적으로 참과 거짓에 해당하는 모든 데이터들을 그리고 (&&) 연산자 좌우에다가 피연산자로 사용할 수 있다.
왼쪽에서부터 오른쪽으로 해석을 해 나가는데 참을 만나면, 다음으로 만나고,
거짓을 만나면 바로 반환 처리를 한다. 모두다 참이여서 거짓을 만나지 못하면 가장 마지막에 있는 데이터를 반환한다.
OR (||) 연산자
// OR 연산자
→ 코드의 왼쪽에서 오른쪽으로 가면서 제일 먼저 만나는 '참' 데이터를 반환한다.
console.log(false || true); // true
console.log(0 || 1); // 1
console.log(false || 0 || {}); // {}
console.log(false || [] || null); // []
console.log(function () {} || undefined || ""); // f () {}
console.log(false || 0 || NaN); // NaN