논리 연산자(Logical Operator)
💡 연산자의 우선 순위는 ! => && => || 순서 💡
(OR) || (OR)
- 인수 중 하나만 true이면 true 값을 반환한다.
- 피연산자가 모두 false 인 경우를 제외하면 모두 true를 반환한다.
- 가장 왼쪽 부터 오른쪽으로 값을 평가하며, 가장 먼저 만나는 true인 값을 반환한다.
(boolean값이 아닌 원래 값 반환)
- truthy값이 하나도 없다면, 가장 오른쪽 값을 반환한다.
null || 2 || undefined
null || 2 && 3 || 4
if (-1 || 0) alert( 'first' );
if (null || -1 && 1) alert( 'third' );
name1 || name2 || name3 || 'default Name'
(AND) && (AND)
- 인수 중 하나라도 false라면 false 값을 반환한다.
- 가장 왼쪽 부터 오른쪽으로 값을 평가하며, 가장 먼저 만나게 되는 falsy값을 반환한다.
- falsy값이 없다면 가장 마지막 값을 반환한다.
1 && 2 && null && 3
1 && 2 && 3
(x > 0) && console.log('양수네?');
1 && null && 2
!(NOT)
- 피연산자를 boolean값으로 변환한 뒤 그 반대 boolean값을 반환함.
- !!와 같이 두개의 연산자를 사용하면 값을 boolean 값으로 바꿔 출력한다.(내장 함수 Boolean 사용 결과와 동일함)
- ! 연산자는 모든 논리 연산자 중 우선순위가 가장 높다.
!0
!-1
!!null
!!-1
!!'hello world'
!!''