LHJ

I'm a FE developer.

3-11. 연산자(Operator) / 콤마, 그룹핑, 논리 연산자

19 Nov 2020 » js_beginner

27. 콤마, 그룹핑, 논리 연산자

콤마 연산자

  • 기호: , (Comma)
  • 콤마로 표현식을 분리

    • var a = 1, b = 2;
    • 한번만 var 작성

() 연산자

  • 그룹핑 연산자
  • 소괄호() 안의 표현식을 먼저 평가

    • 평가한 값을 반환
    • 5 / (2 + 3)

|| 연산자

  • 논리 OR 연산자
  • 표현식의 평가 결과가
    하나라도 true 이면 true
    아니면 false

      var value, zero = 0, two = 2;
      console.log(value || zero || two); // 2
    
    1. value 변수값이 undefined 이므로 false, 그렇기 때문에 다음 zero 값 평가
    2. zero 변수값이 0이므로 false, 그렇기 때문에 다음 two 값 평가
    3. two 변수값이 2이므로 true 가 되며 two 변수값을 반환
    4. true 가 아니라 true 가 되는 변수값 반환
      2가 true 이므로 전체 비교는 true
      var value, zero = 0;
      console.log(zero || value); // undefined
    
    1. 마지막까지 비교하였는데 모두가 false 이면 false 가 아니라 마지막 변수값 반환
  • 왼쪽 결과가 true 이면
    오른쪽은 비교하지 않음

      var one = 1;
      console.log(one === 1 || two === 2); // true
    
    1. 왼쪽의 (one === 1) 결과가 true 이므로 true 반환
    2. 왼쪽 비교 결과가 true 이면 오른쪽은 비교하지 않음
    3. 오른쪽을 비교하면 two 변수가 없으므로 에러가 발생해야됨
      즉 프로그램을 개발할 땐 OR 연산자의 모든 비교조건이 제대로된 것인지 체크해야됩니다.
      그렇지 않으면 위와 같은 경우가 발생했을 때 프로그램에서 에러가 발생하게 됩니다.

&& 연산자

  • 논리 AND 연산자
  • 표현식의 평가 결과가 모두 true 이면 true, 아니면 false

      var one = 1, two = 2;
      console.log(one && two); // 2
    
    1. one 변수값이 1이므로 true, true 이므로 오른쪽을 비교
    2. two 변수값이 2이므로 true, 모두가 true 이며 마지막의 2를 반환
  • 왼쪽 결과가 false 이면 오른쪽은 비교하지 않음

      var one = 1, zero = 0;
      console.log(one && zero && nine); // 0
    
    1. one 변수값이 1이므로 true, true 이므로 오른쪽 비교
    2. zero 변수값이 0이므로 false, false 이므로 오른쪽을 비교하지 않고 zero 변수값인 0 반환
    3. nine 을 비교하면 nine 변수가 없으므로 에러가 발생해야됨