글 작성자: 망고좋아
반응형

 

논리 연산자

  • 논리 연산자 ||(OR), &&(AND), !(NOT)이 있다.

 

 

|| (OR)

  • 피연산자가 모두 false인 경우를 제외하고 연산 결과는 항상 true
alert( true || true );   // true
alert( false || true );  // true
alert( true || false );  // true
alert( false || false ); // false

 

 

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

  • 자바스크립트에서만 제공하는 논리 연산자 OR의 '추가’ 기능
  • OR 연산자와 피연산자가 여러 개인 경우:
  • result = value1 || value2 || value3;
  • 이때, OR ||연산자는 다음 순서에 따라 연산을 수행한다.
    • 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가
    • 각 피연산자를 불린 형으로 변환한다. 변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.
    • 피연산자 모두를 평가한 경우(모든 피연산자가 false로 평가되는 경우)엔 마지막 피연산자를 반환한다.
  • 핵심은 반환 값이 형 변환을 하지 않은 원래 값이라는 것이다.
  • "||" 연산자를 여러 개 체이닝(chaining) 하면 첫 번째 truthy를 반환합니다. 피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환한다.
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 || "익명"); // 바이올렛
// 만약 모든 변수가 false면 "익명" 출력

 

 

단락 평가

  • 단락 평가는 연산자 왼쪽 조건이 falsy일 때만 명령어를 실행하고자 할 때 자주 쓰인다.
true || alert("not printed");
false || alert("printed");
// 출력 : printed

 

 

&& (AND)

alert( true && true );   // true
alert( false && true );  // false
alert( true && false );  // false
alert( false && false ); // false
  • 피연산자 모두가 평가되는 경우(모든 피연산자가 true로 평가되는 경우)엔 마지막 피연산자가 반환된다.
  • &&의 우선순위가 ||보다 높다.

 

 

! (NOT)

alert( !true ); // false
alert( !0 ); // true
  • NOT을 두 개 연달아 사용(!!)하면 값을 불린 형으로 변환할 수 있다.
alert( !!"non-empty string" ); // true
alert( !!null ); // false

 

 

📌 참고

반응형