728x90
// 논리 (Logical)
const a = true
const b = false
// AND (그리고) 연산자
if (a && b) { // 아무것도 출력 되지 않는다. (a가 참이여야 하고, b도 참이어야 한다)
console.log('모두 참 !')
}
// OR (또는) 연산자
if (a || b) { // 출력 된다. (a가 참이거나, 또는 b가 참이다)
console.log('하나 이상이 참 !')
}
console.log(true && false) // false
// && == AND == 그리고 연산자를 사용 하면 단순하게 true 또는 false 가 반환 되는게 아니라,
// 연산자를 기준으로 좌우의 피 연산자가 반환 될 수 도 있다.
// => && 연산자는 코드의 왼쪽에서부터 확인을 해서, 가장 먼저 만나는 거짓 데이터를 반환 한다.
// 숫자 1은 true 데이터 이고, 숫자 0은 false 데이터 이기 때문에, 0 데이터가 반환 된다.
console.log(1 && 0) // 0
console.log(1 && 2 && 0) // 0
console.log(1 && 0 && 2) // 0
console.log(0 && 1 && 2) // 0
console.log('A' && 'B' && '') // '' : 빈 문자열 => false 데이터 (아무것도 출력 되지 않는다)
console.log('A' && 'B' && 'C') // 모두가 참이면, 최종적으로 마지막 참인 데이터가 반환 된다. => C
// => || : OR 연산자는 제일 첫번째에 나온 true 데이터를 반환 한다.
console.log(false || true) // true
console.log(0 || 1) // 1
console.log(false || 0 || {}) // {} : 빈 객체 데이터는 true 데이터 이다.
console.log(false || [] || null) // [] : 빈 배열 데이터는 true 데이터 이다.
console.log(function () {
} || undefined || '') // f () {} : 함수 데이터도 true 데이터 이다.
// NaN : Not a Number 은 false 데이터 이지만,
// false 도 false 데이터 이고, 0 도 false 데이터 이고, NaN 도 false 데이터인 상황 이다.
// 더이상 넘어갈 수 없으니, 참인 데이터가 존재 하지 않지만,
// 최종적으로 제일 마지막에 있는 데이터가 반환 되게 된다.
console.log(false || 0 || NaN)
&& 은 어차피 모두가 참이어야 조건문이 통과되므로,
console.log() 를 통해 데이터의 참 / 거짓을 판단 할 때,
하나라도 거짓인 데이터가 있으면 조건문 통과가 되지 않으므로,
제일 처음에 확인된 거짓인 데이터를 반환 한다.
대신에, 모두가 참이면, 제일 마지막에 참인 데이터가 출력 된다.
|| 은 조건이 몇개가 됬더라도, 결국 1개만 참이여도 모두 참이 되기 때문에,
console.log() 를 통해 어떤 데이터가 참인지를 확인 하면 된다.
그래서, 제일 처음에 확인된 참인 데이터를 반환 한다.
대신에, 모두가 거짓이면, 제일 마지막에 거짓인 데이터가 출력 된다.
반응형
'자바스크립트 (JavaScript) > 이론' 카테고리의 다른 글
[ 연산자와 구문 ] 전개 연산자 (1) | 2023.11.01 |
---|---|
[ 연산자와 구문 ] Nullish 병합, 삼항 연산자 (1) | 2023.11.01 |
[ 연산자와 구문 ] 부정, 비교 연산자 (0) | 2023.11.01 |
[ 연산자와 구문 ] 산술, 할당, 증감 연산자 (0) | 2023.10.31 |
[ JS 데이터 ] 데이터 타입 확인 (0) | 2023.10.31 |