[Javascript] 9. 논리 연산자

Eden·2022년 7월 28일
0

Javascript

목록 보기
9/33

논리 연산자

|| (OR)

여러 개 중 하나라도 true면 true
모든 값이 false일 때만 false를 반환

&& (AND)

모든 값이 true일 때만 true
즉, 하나라도 false면 false를 반환

!(NOT)

true와 false를 서로 반대 값으로 바꿔준다.
true면 false로 false를 true로 반환

사용방법

<script>
//OR
//이름이 Eden이거나 성인이면 통과
const name = "Brie";
const age = 20;

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

//AND
//이름이 Eden이고 성인이면 통과
const name = "Eden";
const age = 20;

if(name ==='Eden' && age > 19) {
	console.log('통과');
}//"통과"
--------
const name = "Brie";
const age = 20;

if(name ==='Eden' && age > 19) {
	console.log('통과')
} else {
	console.log('탈락입니다')
}//"탈락입니다"


//NOT
//나이를 입력받아 성인이 아니면 탈락입니다..
const age = prompt('나이가 어떻게 되세요?')//10
const isAdult = age > 19;

if(!isAdult) {//성인이 아니면 //
	console.log('탈락입니다')
}//"탈락입니다"
</script>

차이점

예를 들어보자! 먼저 Eden은 한국인이고 여자다.

Eden은 미국인이거나(OR) 여자이다.

true다. 이것이 OR다.
하나의 조건만 만족해도 참이기 때문에 true값을 가진다.

Eden은 미국인이고(AND) 여자이다.

false다. 미국인이 아니기 때문에 거짓 값을 가진다.

OR와 AND의 차이다.

또 다른 차이점,

OR는 첫번째 true를 발견하는 즉시 평가를 멈춘다.
Eden은 여자고, 미국인이고, 학생이고 ...
첫번째 값 여자부터 true이기 때문에 뒤에 오는 설명은 읽지않고 true를 반환한다.

반대로 AND는 첫번째 false를 발견하는 즉시 평가를 멈춘다.
Eden은 남자고, 한국인이고, 군인이고 ...
첫번째 값 남자부터 false 이기 때문에 그 뒤의 정보는 무시한다.

실제 코드에서도 어떤 순서로 평가를 배치하는지 중요하다.
간단한 평가로 true와 false를 먼저 판단할 수 있다면 복잡한 작업 전에 해주는 것이 좋다.

평가에서 많은 데이터를 걸러낼 수 있는 작업부터 해준다면 시간을 눈에 띄게 줄일 수 있다. 이런 작업들은 성능 최적화에 도움을 준다.

우선순위

&&(AND)가 ||(OR)보다 우선순위가 높아 먼저 평가됩니다.

<script>
//여자고, 이름이 Eden이거나 성인이면 통과

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

if (gender ==='M' && name === 'Eden' || isAdult) {
	console.log('통과')
} else {
	console.log('탈락입니다')
}//"통과" 
//???????????
//의도한대로 표현하려면 
if (gender ==='M' && (name === 'Eden' || isAdult)) {
	console.log('통과')
} else {
	console.log('탈락입니다')
}//"탈락입니다"

if (gender ==='F' && (name === 'Eden' || isAdult)) {
	console.log('통과')
} else {
	console.log('탈락입니다')
}//"통과"
</script>
profile
one part.

0개의 댓글