그 중에서 논리연산자라고 있는데 이게 중요하다.
frue or false로만 보여진다.
이것을 처리하기 위해 이루어진 연산자가 3가지 종류가 있다.
// NOT ! (부정)
// AND && (논리합)
// OR || (논리곱)
NOT !는 특정블리언을 반전시켜주는 역할이다. false는 true로 true는 false로 바꿔준다.
AND && 양 옆의 블리언이 모두 true일 때, true로 반환합니다. 하나라도 다르면 false가 뜹니다.
OR || 둘 중의 값이 하나라도 true라면, ture로 반환합니다. 둘 다 달라야만 false로 뜹니다.
const kjs = 'Cat' && 'Dog' //"Dog"
console.log(kjs);
이것의 결과는 Dog과 나온다. 논리곱연산자는 둘 다 true여야 true로 반환되는데 이것은 값이 다르니 false가 출력이 될 것이다. 그렇다면 문자열의 경우는 어디서부터 반환이 되는건가? 왜 Dog가 결과값으로 나오는 것일까?
AND && (논리곱) 연산자는 두개의 피연산자 모두 true로 평가될 때 true로 반환한다. 대부분의 연산자가 그렇듯이 논리곱연산자도 오른쪽에서 왼쪽으로 평가가 진행이 된다.
- 첫번째 피연산자 'Cat'은 Truthy[트루디{꼭 사실은 아니지만 사실 같은}] 값이므로 ture로 평가된다. 하지만 이 시점까지는 위 표현식을 평가할 수 없다. 두 번째 피연산자까지 평가해 보아야 위 표현식을 평가할 수 있다.
- 두 번째 피연산자 'Dog'은 Truthy값으로 true로 평가된다. 이 때 두개의 피연산자 모두 true로 평가되었다. 이 때 논리곱 연산의 결과를 결정한 것으 두 번째 피연산자 'Dog'다.
- 논리곱 연산자 &&는 논리연산의 결과를 결정한 두번째 피연산자의 평가 결과 즉, 문자열 'Dog'를 그대로 반환한다.
논리합 연산자 ||도 논리곱 연산자 &&와 동일하게 동작한다.
이것은 조건문을 구현할 때 정말 많이 사용이 된다.
처리되는 순서가 따로 있다.
- NOT !
- AND &&
- OR ||
순으로 논리연산을 처리한다.
const value = !(true && false || true && false || !false)
// !(true && false || true && false || !false)
// !(false || false || true)
// !(true)
// flase
console.log(value);
먼저 !를 처리해야되는데 괄호밖의 !는 제일 마지막에 변환해주니까 안에있는 !false는 true인거고,
두 번째로 &&을 처리해야되는데 이건 둘다 true여야만, true해주니까 두개의 값 다 false이다.
세 번째로 ||는 하나라도 비교시에 true가 있으면, ture로 반환을 해주니까
결국에 괄호안의 계산은 (true)가 되는데 이런..밖에 !가 남아 있었네?
그러면 반전 시켜주는 역할이니까 다시 최종 계산이 되는 값은 flase이지요.
이 예제가 한번에 이해가 되신다면 당신은 논리연산자 마스터