JavaScript 2.11
논리연산자
|| (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 보다 먼저 실행된다.