본문 바로가기
코딩/자바스크립트

논리 연산자

by rosemarie 2022. 10. 11.
반응형

||(OR), &&(AND), !(NOT)

논리 연산자는 피연산자로 불린형뿐만 아니라 모든 타입의 값을 받을 수 있습니다.

 

|| (OR)

result = a || b;

 

피연산자가 모두 false인 경우를 제외하고 연산 결과는 항상 true입니다.

피연산자가 불린형이 아니면, 평가를 위해 불린형으로 변환됩니다.

숫자 1은 true로, 숫자 0은 false로 바뀌죠.

 

첫 번째 truthy를 찾는 OR 연산자 ‘||’

result = value1 || value2 || value3;

 

  • 왼쪽 -> 오른쪽으로 나아가며 피연산자를 평가합니다.
  • 각 피연산자를 불린형으로 변환합니다. 변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환합니다.
  • 모든 피연산자가 false로 평가되는 경우 마지막 피연산자를 반환합니다.

 

alert( 1 || 0 ); // 1 (1은 truthy임)

alert( null || 1 ); // 1 (1은 truthy임)
alert( null || 0 || 1 ); // 1 (1은 truthy임)

alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을 반환함)

 

 '단락 평가’:  OR ||은 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데, truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춥니다. 

 

&& (AND)

result = a && b;

모두가 참일 때 true를 반환합니다. 그 외의 경우는 false를 반환하죠.

if (1 && 0) { // 피연산자가 숫자형이지만 논리형으로 바뀌어 true && false가 됩니다.
  alert( "if 문 안에 falsy가 들어가 있으므로 alert창은 실행되지 않습니다." );
}

첫 번째 falsy를 찾는 AND 연산자 ‘&&’

  • 가장 왼쪽 피연산자-> 오른쪽으로 나아가며 피연산자를 평가합니다.
  • 각 피연산자는 불린형으로 변환됩니다. 변환 후 값이 false이면 평가를 멈추고 해당 피연산자의 변환 전 원래 값을 반환합니다.
  • 모든 피연산자가 true로 평가되는 경우엔 마지막 피연산자가 반환됩니다.

AND 연산자 &&의 우선순위는 OR 연산자 ||보다 높습니다.

따라서 a && b || c && d는 (a && b) || (c && d)와 동일하게 동작합니다.

 

! (NOT)

NOT 연산자는 인수를 하나만 받고

  1. 피연산자를 불린형(true / false)으로 변환합니다.
  2. 1에서 변환된 값의 역을 반환합니다.

NOT을 두 개 연달아 사용(!!)하면 값을 불린형으로 변환할 수 있습니다.

내장 함수 Boolean: !!을 사용한 것과 같은 결과

alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false

NOT 연산자의 우선순위는 모든 논리 연산자 중에서 가장 높기 때문에 항상 &&나 || 보다 먼저 실행됩니다.

 

 

<복습 질문> and, or에서 단락평가 과정 설명하기

'코딩 > 자바스크립트' 카테고리의 다른 글

while과 for 반복문  (0) 2022.10.11
nullish 병합 연산자 '??'  (0) 2022.10.11
if와 '?'를 사용한 조건 처리  (0) 2022.10.11
비교연산자  (0) 2022.10.11
기본 연산자와 수학  (0) 2022.10.11