본문 바로가기

JavaScript

연산자

그 중에서 논리연산자라고 있는데 이게 중요하다.

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로 반환한다. 대부분의 연산자가 그렇듯이 논리곱연산자도 오른쪽에서 왼쪽으로 평가가 진행이 된다.

  1. 첫번째 피연산자 'Cat'은 Truthy[트루디{꼭 사실은 아니지만 사실 같은}] 값이므로 ture로 평가된다. 하지만 이 시점까지는 위 표현식을 평가할 수 없다. 두 번째 피연산자까지 평가해 보아야 위 표현식을 평가할 수 있다.
  2. 두 번째 피연산자 'Dog'은 Truthy값으로 true로 평가된다. 이 때 두개의 피연산자 모두 true로 평가되었다. 이 때 논리곱 연산의 결과를 결정한 것으 두 번째 피연산자 'Dog'다.
  3. 논리곱 연산자 &&는 논리연산의 결과를 결정한 두번째 피연산자의 평가 결과 즉, 문자열 'Dog'를 그대로 반환한다.

논리합 연산자 ||도 논리곱 연산자 &&와 동일하게 동작한다.

이것은 조건문을 구현할 때 정말 많이 사용이 된다.

처리되는 순서가 따로 있다.

  1. NOT !
  2. AND &&
  3. 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이지요.

이 예제가 한번에 이해가 되신다면 당신은 논리연산자 마스터

 

'JavaScript' 카테고리의 다른 글

조건문  (0) 2020.04.09
비교연산자  (0) 2020.04.09
변수선언  (0) 2020.04.09
변수  (0) 2020.04.09
scope의 이해  (0) 2020.03.26