728x90

자바스크립트 기본(11) - 논리 연산자

자바스크립트엔 세 종류의 논리 연산자 ||(OR), &&(AND), !(NOT)가 있다.

1.(OR)

'OR'연산자는 두 개의 수직선 기호로 만들 수 있다.
피연산자 중 하나라도 true라면 true를 반환하고 그렇지 않으면 false를 반환한다.
피연산자가 모두 false인 경우를 제외하면 항상 true를 나타내며,
피연산자가 불린형이 아니라면 평가를 위해 불린형으로 변환한다.

if문에서 주로 활용하지만 자바스크립트에서의 특수한 활용 방법이 존재한다.

  1. 첫 번째 truthy를 찾는 OR 연산자 ||
    result = value1 || value2 || value3;
    위와 같은 경우에 result에는 value1부터 value3까지 순차적으로 검사하며
    ||true를 반환하는 첫 번째 value를 반환하여 result에 할당한다.
    단, 피연산자에 truthy값이 하나도 없다면 마지막 피연산자를 반환한다.
    let firstName = "";
    let lastName = "";
    let nickName = "바이올렛";
    

alert( firstName || lastName || nickName || "익명"); // 바이올렛

예를 모든 값이 falsy 값이라면 기본 값으로 설정된 값을 가지도록 지정하는 등의 작없을 할 수 있다.
2. 단락 평가
`||`연산자는 `true`값을 만나면 즉시 해당 평가를 멈추기 때문에 `false`일 때만 명령어를 사용하도록 구성할 수 있다.
```js
true || alert("not printed");
false || alert("printed");




2.(AND)

두 개의 앰퍼샌드를 연달아 쓰면 AND 연산자 &&를 의미한다.
피연산자 중 하나라도 false라면 false를 반환하고 그렇지 않으면 true를 반환한다.
||와 유사하게 첫번째 falsy 값을 찾는 연산자로 사용할 수 있다.

result = value1 && value2 && value3;

모두 true라면 마지막 값이, 중간에 false가 있다면 해당 값이 result에 할당된다.


3.와

&&의 우선순위가 ||보다 높아서 a && b || c && d(a && b) || (c && d)와 동일하게 동작한다.
종종 ||&&if문처럼 사용하는 경우도 있으나, 가독성과 유지보수성에 있어서 좋지 않다.


4.(NOT)

논리 연산자 NOT은 느낌표 !를 써서 만들 수 있다.
!연산자는 피연산자를 하나만 받아 불린형으로 변환하고, 해당 값의 역을 반환하다.
(!!을 사용하면 Boolean()을 사용한 값과 같은 결과가 반환된다.)
NOT연산자의 우선순위는 모든 논리 연산자 중에서 가장 높아 &&||보다 먼저 실행된다.

728x90

+ Recent posts