코딩앙마 TIL [자바스크립트 기초 강좌 #7 - 논리 연산자(AND, OR, NOT)]

이민선(Jasmine)·2022년 11월 7일
0

논리 연산자

🎀이론적 이해
|| (or) : 여러개 중 하나라도 true면 true
즉, 모든 값이 false 일 때만 false 를 반환
ex. 스티브잡스는 한국인이거나, 남자이다. true
첫번째 true를 발견하는 즉시 평가를 멈춤.
ex. 스티브잡스는 남자이거나///true///, 한국인이거나, 군인이거나....

&& (and) : 모든 값이 true일 때만 true
즉, 하나라도 false 면 false 를 반환
ex. 스티브잡스는 한국인이고, 남자이다. False
첫번째 false를 발견하는 즉시 평가를 멈춤.
스티브잡스는 남자이고, 한국인이며///false///, 군인인 동시에....

실제 코드에서도 어떤 순서로 평가를 배치하는 지가 중요하다.
ex. 운전면허가 있고(전체 군인의 80%) 시력이 좋은(전체 군인의 60%) 여군(전체 군인의 7%)
-> 여군인데 시력이 좋고 운전면허가 있는 사람
첫번째 평가에서 93%를 걸러낼 수 있어 시간을 줄일 수 있고 성능 최적화에 도움이 됨.

! (Not)
true 면 false
false 면 true

🎀어떻게 사용하는가
|| (or)
a||b // a나 b중 true가 있으면 true

&& (and)
a&&b // a와 b 둘 다 true이면 true

! (not)
!a // a가 false이면 true

const name = "Mike";
const age = 30;

if(name === 'Tom' || age > 19){
console.log('통과');
}
-> "통과"

const name = "Mike";
const age = 30;

if(name === 'Mike' && age > 19){
console.log('통과');
} else {
console.log('돌아가.')
}
-> "통과"

const name = "Mike";
const age = 10;

if(name === 'Mike' && age > 19){
console.log('통과');
} else {
console.log('돌아가.')
}
-> "돌아가"

const name = "Tom";
const age = 30;

if(name === 'Mike' && age > 19){
console.log('통과');
} else {
console.log('돌아가.')
}
-> "돌아가"

const age = prompt('나이가..?');
const isAdult = age > 19;

if(!isAdult){
console.log('돌아가..')
}

console.log('-----------------------')

-> 나이를 입력하는 창이 뜸.
10 입력 시 "돌아가"
30 입력 시 "-----------------------"

비교에도 우선순위가 있다.
남자이고, 이름이 Mike이거나 성인이면 통과할 경우 어떻게 될까?

const gender = 'F';
const name = 'Jane';
const isAdult = true;

if(gender === 'M' && name === 'Mike' || isAdult){
console.log('통과')
} else {
console.log('돌아가.')
}
-> "통과"

if(gender === 'M' && name === 'Mike' || isAdult){
if((gender === 'M' && name === 'Mike') || isAdult){
위의 두 코드는 같기 때문.

만약
if(gender === 'M' && (name === 'Mike' || isAdult)){
console.log('통과')
} else {
console.log('돌아가.')
}

-> 이면 "돌아가"

const gender = 'M';
const name = 'Jane';
const isAdult = true;

if(gender === 'M' && (name === 'Mike' || isAdult)){
console.log('통과')
} else {
console.log('돌아가.')
}

-> "통과"

profile
기록에 진심인 개발자 🌿

0개의 댓글