본문 바로가기

Language/JS

논리 연산자 && ||

1. 그리고 &&

(1) 정의 

A&&B 는 A, B 둘 다 참이여야지만 참을 반환 

const A = true
const B = true

if (A&&B) {
	console.log('A,B 둘 다 참이다.')
}

// A,B 둘 다 참이다 반환

(2) JS만의 특이점  

위에서 그냥 'A,B 둘 다 참이면 참을 반환' 한다고 말했지만, JS는 다른 언어들과 달리 여기서 그치지 않고 자기들만의 규칙이 있다. 

만약에 A&&B 자체를 console에 찍는다고 하자. 

다른 언어 같았으면, A = 0 , B = 1 이면 false를 찍는다. (0은 거짓, 0이 아닌 숫자는 모두 참 취급을 하므로 )

하지만 JS는 0이 출력된다. 

이렇게 되는 이유는 JS 만의 규칙이 존재하기 때문이다. 

JS에서의 && 연산자는 가장 먼저 만나는 false 값을 반환한다. (false 만난 이후부터는 안 읽음)

만약에 전부 참이면 제일 마지막의 참 값을 반환한다. 

 

예시1) 

''(빈 문자열)은 false 취급 하므로, 27줄의 출력은 제일 먼저 만난 false 값인 빈 문자열이 나왔고

28줄은 전부 true인 값이므로 제일 마지막 true 값인 c가 나왔다. 

 

예시2) 

0은 false인 값이다. console로 뭘 먼저 찍든 간에 제일 먼저 만난 false 값인 0을 반환한다. 

2. 이거나 || 

(1) 정의 

A||B는 A나 B 둘 중 하나가 참이면 참을 반환한다. 

const A = true
const B = false

if(A||B){
	console.log('A혹은 B가 참이다.')
}

// A가 참이므로 'A 혹은 B가 참이다. ' 가 찍힘

(2) JS만의 특이점 

|| 관련해서도 JS 만의 규칙이 있다. 이는 &&와 논리적으로 반대 이다. 

 

|| 는 가장 먼저 만나는 참 값을 반환한다.  (참 값을 만나면 그 뒤는 읽지 않는다.)

만약 참 값이 없다면 맨 마지막의 거짓 값을 반환한다. 

 

예시1)

빈 객체, 빈 배열, 함수 모두 참 취급을 받는다. 

따라서 맨 먼저 참 취급 받는 값을 만났을 때, 그 값을 반환하고 그 뒤로는 읽지 않는다. 

 

예시2) 

 

모두 거짓일 때는 제일 마지막에 만난 거짓값을 반환한다. 

3. 스스로 해보기 

 

(2 번째 복습)

1. 정리

&& : 전부 참이여야지 참

> 반환값: 최초로 만나는 거짓값 혹은, 모든 변수가 참일 경우 맨 마지막에 만나는 참값

> 최초로 거짓값을 만났다면 그 뒤는 읽지 않는다.(하나라도 거짓이 있으면 그 boolean 값은 거짓이므로)

 

|| : 변수들 중 하나라도 참이면 참

> 반환값: 최초로 만나는 참 값, 모두 거짓일 경우 제일 마지막에 만나는 거짓값

> 최초로 참 값을 만났다면 그 뒤로는 읽지 않는다. (하나라도 참이 있으면 그 boolean은 참이므로)  

 

2. 스스로 해보기 (2)

'Language > JS' 카테고리의 다른 글

전개 연산자  (0) 2023.04.02
Nullish 병합 과 삼항 연산자  (0) 2023.04.02
부정, 비교 연산자  (0) 2023.03.31
산술 할당 증감 연산자  (0) 2023.03.31
Type 확인  (0) 2023.03.31