JavaScript 2.11

1 minute read

논리연산자

|| (OR)

  • 불린 값을 조작하는데 쓰인다.
  • 인수 중 하나라도 true이면 true를 반환하고 그렇지 않으면 false를 반환한다.

논리 연산자 or의 추가 기능

  • or 연산자와 피연산자가 여러개인 경우

    • Result = v1 || v2 || v3
      
  • 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.
  • 각 피연산자를 불린형으로 변환한다.변환 후 그 값이 true이면 연산을 멈추고 해당 피연산자의 변한 전 원래 값을 반환한다.
  • 피연산자를 모두 평가한 경우(모든 피연산자가 false로 평가되는 경우)엔 마지막 피연산자를 반환한다.
  • 즉, or 연산자를 여러개 체이닝하면 첫번째 truthy를 반환한다. 피연산자에 truthy가 하나도 없다면 마지막 피연산자를 반환한다.
  • 단락 평가

    • 왼쪽으로부터 시작해서 오른쪽으로 평가를 진행하는데 truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 머추는 것을 단락 평가라고 한다.

&& (AND)

  • 두 피연산자가 모두 참일때 true를 반환한다.

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

  • && 연산자와 피연산자가 여러개인 경우

    • Result = v1 && v2 && v3
      
  • 가장 왼쪽 피연산자부터 시작해 오른쪽으로 나아가며 피연산자를 평가한다.

  • 각 피연산자를 불린형으로 변환한다.변환 후 그 값이 false이면 연산을 멈추고 해당 피연산자의 변한 전 원래 값을 반환한다.
  • 피연산자를 모두 평가한 경우(모든 피연산자가 true로 평가되는 경우)엔 마지막 피연산자를 반환한다.
  • 즉, and 연산자를 여러개 체이닝하면 첫번째 falsy를 반환한다. 피연산자에 falsy가 하나도 없다면 마지막 피연산자를 반환한다.

  • And 의 우선순위가 or 보다 높다.

! (NOT)

  • 논리 연산자의 NOT은 느낌표 !를 써서 만든다.

    • result = !value;
  • 인수를 하나만 받고 다음 순서대로 연산을 수행한다.

    • 피연산자를 불린형으로 변환한다.
    • 변환된 값의 역을 반환한다.
  • NOT을 두개 연달아 사용하면 값을 불린형으로 변환할 수 있다.

    • alert( !!”non-empty string” ); // true

    • alert( !!null ); //false

      • 첫번째 not 연산자는 피연산자로부터 받은 값을 불린형으로 변환한 후 이 값의 역을 반환하고, 두번째 not 연산자는 첫번째 not 연산자가 반환한 값의 역을 반환한다.
  • 내장함수 Boolean을 사용하면 !!을 사용한 것과 같은 결과를 도출할 수 있다.
    • alert( Boolean(“non-empty string”) ); // true
    • alert( Boolean(null) ); // false
  • NOT연산자의 우선 순위는 모든 논리 연산자 중에서 가장 높기 때문에 and 나 or 보다 먼저 실행된다.

Categories:

Updated: