논리 연산자
자바 스크립트에는 3가지 논리연산자가 존재한다
|| (OR)
여러개 중 하나라도 true
면 true
를 반환
즉 , 모든값이 false
일때만 false
를 반환
a || b
&& (AND)
모든값이 true
면 true
를 반환
즉, 하나라도 false
면 false
를 반환
a && b
! (NOT)
true
면 false
false
면 true
를 반환
!a (a가 false 이면 true)
예 )
OR
||
) , 남자이다. true
2.스티브 잡스는 한국인 이고(AND
&&
) , 남자이다. false
논리연산자를 평과하는 과정
OR
첫번째 true
를 발견하는 즉시 평가를 멈춤
AND
는 첫번째 false
를 발견하는 즉시 평가를 멈춤
OR
이름이 TOM 이거나, 성인이면 통과
const name = "Mike";
const age = 30;
if(name === TOM || age > 19){
console.log('통과');
}
결과값: "통과"
AND
이름이 TOM 이고 , 성인이면 통과
const name = "MIKE";
const age = 30;
if(name === TOM && age > 19){
console.log('통과');
} else{
console.log('돌아가')
}
결과값 : "돌아가"
NOT
나이를 입력받아 성인 아니면 돌아가라고 하기
const age = prompt('나이가..?');
const isAdult = age > 19;
if(!isAdult){
console.log('돌아가')
}
우선순위
남자이고, 이름이 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)
즉 위의 코드와 같은 결과 값이다.
성별과 이름이 틀렷지만 이후 성인여부에서 true 가 결정되었기 떄문에 통과라는 결과 값이 나왔다.
if ( gender === 'M' && name === 'Mike' || isAdult)를
if ( gender === 'M' &&( name === 'Mike' || isAdult))로 변경하니 값이 달라졌다.