|| (or)
인수 중 하나라도 true이면 true를 반환하고, 그렇지 않으면
false를 반환한다요
or 연산자는 이항 연산자 이므로 예시처럼 조합이 가능
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
피연산자가 둘다 false인 경우 제외 전부 true가 반환된다
거기다 피연산자가 불린 타입이 아니면 변환시켜주는데
예시로 1은 true로 0은 false로 바뀝니다.
if (1 || 0) { // if( true || false ) 와 동일하게 동작합니다.
alert( 'truthy!' );
}
첫번째 truthy를 찾는 or연산자 '||'
전통적인 방식이 아닌 JS에서만 제공하는
논리연산자 or의 '추가'기능에 대해 알아보자
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이므로, 마지막 값을 반환함)
let firstName = "";
let lastName = "";
let nickName = "바이올렛";
alert( firstName || lastName || nickName || "익명"); // 바이올렛
&& (And)
두개의 앰퍼샌드 (&)를 연달아 쓰면 And 연산자가 만들어진다
전통적으로는 둘다 true가 나와야 true를 반환. 이외에는 모두 false
alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false
첫번째 falsy를 찾는 And 연산자 '&&'
- 가장 왼쪽부터 시작해 오른쪽으로 평가를 진행하는데
피연산자는 불린형으로 변환하는데 그 값이 false면 평가를 멈추고 변환 전 값을 반환 (근데 왜 false면 멈출까 ..?) - 모두 평가되는 경우 (피연산자 모두 true인 경우) 마지막 피연산자가 반환
- 이 알고리즘은 or 연산자 알고리즘과 유사한데 차이점은 And는 falsy를 반환하는 반면 or은 true를 반환
result = value1 && value2 && value3;
// 첫 번째 피연산자가 truthy이면,
// AND는 두 번째 피연산자를 반환합니다.
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5
// 첫 번째 피연산자가 falsy이면,
// AND는 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시합니다.
alert( null && 5 ); // null
alert( 0 && "아무거나 와도 상관없습니다." ); // 0
&&의 우선순위가 ||보다 높댄다 (중요!!)
따라서
a && b || c && d는 (a && b) || (c && d)와 동일하게 동작
! (NOT)
NOT연산자는 피연산자를 하나만 받고
- 불린형으로 변환 한 다음,
- 1에서 나온 값의 역을 반환
예시:
alert( !true ); // false
alert( !0 ); // true
NOT을 두 개 연달아 사용(!!)하면 값을 불린형으로 나타낼 수도 있음
똑같은 결과를 도출하는 내장 함수는 Boolean()이 있다
alert( !!"non-empty string" ); // true
alert( !!null ); // false
alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false
'JavaScript > Basics' 카테고리의 다른 글
[JavaScript] switch문 (0) | 2022.03.10 |
---|---|
[JavaScript] nullish coalescing opertor (null 병합 연산자) (0) | 2022.03.10 |
[JavaScript] if와 '?'를 사용한 조건 처리 (0) | 2022.03.09 |
[JavaScript] 비교 연산자 (0) | 2022.03.09 |
[JavaScript] 기본 연산자와 수학 (0) | 2022.03.09 |