27. 콤마, 그룹핑, 논리 연산자
콤마 연산자
- 기호: , (Comma)
콤마로 표현식을 분리
- var a = 1, b = 2;
- 한번만 var 작성
() 연산자
- 그룹핑 연산자
소괄호() 안의 표현식을 먼저 평가
- 평가한 값을 반환
- 5 / (2 + 3)
|| 연산자
- 논리 OR 연산자
표현식의 평가 결과가
하나라도 true 이면 true
아니면 falsevar value, zero = 0, two = 2; console.log(value || zero || two); // 2
- value 변수값이 undefined 이므로 false, 그렇기 때문에 다음 zero 값 평가
- zero 변수값이 0이므로 false, 그렇기 때문에 다음 two 값 평가
- two 변수값이 2이므로 true 가 되며 two 변수값을 반환
- true 가 아니라 true 가 되는 변수값 반환
2가 true 이므로 전체 비교는 true
var value, zero = 0; console.log(zero || value); // undefined
- 마지막까지 비교하였는데 모두가 false 이면 false 가 아니라 마지막 변수값 반환
왼쪽 결과가 true 이면
오른쪽은 비교하지 않음var one = 1; console.log(one === 1 || two === 2); // true
- 왼쪽의 (one === 1) 결과가 true 이므로 true 반환
- 왼쪽 비교 결과가 true 이면 오른쪽은 비교하지 않음
- 오른쪽을 비교하면 two 변수가 없으므로 에러가 발생해야됨
즉 프로그램을 개발할 땐 OR 연산자의 모든 비교조건이 제대로된 것인지 체크해야됩니다.
그렇지 않으면 위와 같은 경우가 발생했을 때 프로그램에서 에러가 발생하게 됩니다.
&& 연산자
- 논리 AND 연산자
표현식의 평가 결과가 모두 true 이면 true, 아니면 false
var one = 1, two = 2; console.log(one && two); // 2
- one 변수값이 1이므로 true, true 이므로 오른쪽을 비교
- two 변수값이 2이므로 true, 모두가 true 이며 마지막의 2를 반환
왼쪽 결과가 false 이면 오른쪽은 비교하지 않음
var one = 1, zero = 0; console.log(one && zero && nine); // 0
- one 변수값이 1이므로 true, true 이므로 오른쪽 비교
- zero 변수값이 0이므로 false, false 이므로 오른쪽을 비교하지 않고 zero 변수값인 0 반환
- nine 을 비교하면 nine 변수가 없으므로 에러가 발생해야됨