JUST GO

[공통] 연산자 본문

JavaScript/학습내용

[공통] 연산자

root_go 2022. 10. 4. 16:45

연산자(Operator)

- 연산자는 연산자 기준, 좌/우 항목을 연산하기 위해 사용한다.


연산자의 우선순위(숫자가 작으면 우선 실행됨)

0. 그룹 연산자

1. 멤버 접근자, 옵셔널 체이닝

2. 논리 NOT 연산자

3. 거듭 제곱 연산자

4. 곱하기 연산자, 나누기 연산자, 나머지 연산자

5. 더하기 연산자, 빼기 연산자

6. 이상, 이하, 초과, 미만 비교 연산자

7. 동등 비교 연산자, 부등 비교 연산자, 일치 비교 연산자, 불일치 비교 연산자

8. 논리 AND 연산

9. 논리 OR 연산, 널 병합 연산자

10. 삼항 연산자

11. 할당 연산자

12. 쉼표 연산자

 

- 연산자의 우선순위가 같을 경우 좌향이 우선 계산됨.

 

그룹 연산자(Group Operator)

- '(...)' 꼴에서 순위가 낮은 연산자에 대해 우선권을 부여하기 위해 사용한다.

우선권을 부여할 연산자를 괄호( (,) )로 감싼다. 가령'(1 + 1) * 5'는 10이다. 하지만 '1 + 1 * 5'는 6이다.

 

할당 연산자(Assignment Operator)

- (일반) 할당 연산자(=) : 'x = y' 꼴에서 y 값을 x 에 할당할 때 사용한다. 이 때 y는 변수 혹은 리터럴(Literal)이어도 상관없으나, x는 리터럴일 수 없다. 할당 연산자는 동등 비교(같은지 비교하기 위한 것)이 아니다.

 

- 더하기 (복합) 할당 연산자(+=) : 'x += y' 꼴에서 x에 y를 더한 값을 다시 x에 재할당한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x + y'와 같다.

 

- 빼기 (복합) 할당 연산자(-=) : 'x -= y'꼴에서 x에 y를 뺀 값을 다시 x에 재할당한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x - y'와 같다.

 

- 곱하기 (복합) 할당 연산자(*=) : 'x *= y' 꼴에서 x에 y를 곱한 값을 다시 x에 할당한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x * y'와 같다.

 

- 나누기 (복합) 할당 연산자(/=) : 'x /= y' 꼴에서 x에 y를 나눈 값을 다시 x에 할당한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x / y'와 같다.

 

- 나머지 (복합) 할당 연산자(%=) : 'x %= y' 꼴에서 x를 y를 정수부까지 나눈 뒤 남은 정수인 나머지를 x에 할당한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x % y'와 같다.

 

- 거듭제곱 (복합) 할당 연산자(**=) : 'x **= y' 꼴에서 x의 y승에 대한 값을 x에 재대입한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x ** y'와 같다.

 

- 논리 AND (복합) 할당 연산자(&&=) : 'x &&= y'꼴에서 x와 y가 모두 참인가에 대한 논리값을 x에 재대입한다. 여기서 x와 y는 논리값이다. 풀어서 작성시 'x = x && y'와 같다.

 

- 논리 OR (복합) 할당 연산자(||=) : 'x ||= y'꼴에서 x와 y중 하나라도 참인가에 대한 논리값을 x에 재대입한다. 여기서 x와 y는 논리값이다. 풀어서 작성시 'x = x || y'와 같다.

 

- 널 병합 할당(??=) : 'x ??= y' 꼴에서 x가 null 혹은 undefined일 때 y값을 x에 대입한다. 여기서 x는 리터럴이 아니다. 풀어서 작성시 'x = x ?? y'와 같다. 이를 또 풀면 'x = x === null || x === undefined ? y : x'와 같다.

 

산술 연산(Arithmetic Operators)

- 더하기 연산자(+) : 'x + y' 꼴에서 x와 y를 더한다. 이 때 두 값 중 하나라도 문자열(string)이 있을 경우 두 값을 문자열 합치기한다. 가령, ( 5 + '5' )의 연산 결과는 문자열인 '55'가 된다. 어떠한 숫자를 문자열로 변경하고자 할때 숫자 더하기 빈 문자열(숫자 + ' ')의 형태를 고의로 사용하기도 한다.

 

- 빼기 연산자( - ) : 'x - y' 꼴에서, x 에서 y 를 뺀다.

 

- 곱하기 연산자(*) : 'x * y' 꼴에서, x 와 y 를 곱한다.

 

- 나누기 연산자( / ) : 'x / y' 꼴에서, x 를 y 로 나눈다.

 

- 나머지 연산자( % ) : 'x % y' 꼴에서, x를 y로 정수부까지 나누고 남은 정수인 나머지를 반환한다.

주로, 짝수 / 홀수를 구분하기 위해 사용한다. 어떠한 값 a에 대한 2로 나눈 나머지(a % 2)가 0이면 짝수 (혹은 0), 1이면 양수인 홀수이다.

 

- 전위 증가 연산자(++) : '++x' 꼴에서, 현재 구문 실행 전, x값에 1을 더한다. 여기서 x는 리터럴이 아니다.

- 전위 감소 연산자(--) : '--x' 꼴에서, 현재 구문 실행 전, x값에 1을 뺀다. 여기서 x는 리터럴이 아니다.

- 후위 증가 연산자(++) : 'x++' 꼴에서, 현재 구문 실행 완료 후, x값에 1을 더한다. 여기서 x는 리터럴이 아니다.

- 후위 감소 연산자(--) : 'x--' 꼴에서, 현재 구문 실행 완료 후, x값에 1을 뺀다. 여기서 x는 리터럴이 아니다.

- 거듭제곱 연산자(**) : 'x ** y' 꼴에서, x의 y승을 계산한다. 가령 '2 ** 3'은 '2의 3승'이고 이는 8이다.

 

비교 연산자(Comparsion Operators)

- 동등 연산자(==) : 'x == y'꼴에서, x와 y의 값이 같은지에 대한 논리값이다. 단, 형변환을 통해 비교할 수 있으면 형변환을 시도한다.

- 부등 연산자(!=) : 'x != y'꼴에서, x와 y의 값이 다른지에 대한 논리값이다. 단, 형변환을 통해 비교할 수 있으면 형변환을 시도한다.

- 일치 연산자(===) : 'x === y' 꼴에서, x와 y의 값과 타입이 같은지에 대한 논리값이다.

- 불일치 연산자(!==) : 'x ! == y'꼴에서, x와 y의 값이나 타입이 다른지에 대한 논리값이다.

- 초과 연산자(>) : 'x > y'꼴에서, x가 y보다 큰가에 대한 논리값이다.

- 이상 연산자(>=) : 'x >= y'꼴에서, x가 y와 같거나 보다 큰가에 대한 논리값이다.

(절대로 => 꼴로 쓰지 않는다.)

- 미만 연산자(<) : 'x < y' 꼴에서, x가 y보다 작은가에 대한 논리값이다.

- 이하 연산자(<=) : 'x >= y' 꼴에서, x가 y와 같거나 보다 작은가에 대한 논리값이다.

 

논리 연산자(Logical Operator)

- AND 연산(&&) : 'x && y' 꼴에서, x와 y가 둘다 논리적으로 참(True)일 때 해당 연산의 결과가 참이된다. 이 때 x와 y는 둘다 논리값이다. x가 거짓인 경우 y를 연산하지 않는다.

- OR 연산(||) : 'x || y' 꼴에서, x와 y중 하나라도 논리적으로 참(True)일 때 해당 연산의 결과가 참이된다. 이 때 x와 y는 둘다 논리값이다. x가 참인 경우 y를 연산하지 않는다.

- NOT 연산(!) : '!x' 꼴에서, x의 논리값을 부정한다. 이 때 x는 논리값이다.


삼항 연산자(Ternary Operator)

- 'x ? a : b' 꼴에서, x조건이 참인 경우 a를, 거짓인 경우 b를 반환한다. 이 때 x는 논리값이다.

 

멤버 접근자(Member Accessor, Property Accessor) 

- 'x.y' 꼴에서 x가 가진 y의 멤버에 접근한다.

 

옵셔널 체이닝 연산자(Optional Chaining Operator)

- 'x?.y' 꼴에서, x가 null이거나 undefined여도 안전하게 y 멤버에 접근할 수 있다. 여기서 만약 x가 null이거나 undefined 였다면 반환 값도 undefined이다.


널 병합 연산자(Nullish Coalescing Operator)

- 'x ?? y' 꼴에서 x가 null이거나 undefined일 때 y를 대신하여 사용한다.

 

 

쉼표 연산자(Comma Operator)

- 값이나 할당을 나열하기 위해 사용한다. 콤마로 구분하고 다음과 같이 작성한다. 'x, y,...'

 

'JavaScript > 학습내용' 카테고리의 다른 글

[공통] 사용자 함수  (0) 2022.10.05
[공통] 오브젝트  (1) 2022.10.04
[공통] 반복문  (1) 2022.10.04
[공통] 배열  (1) 2022.10.04
[공통] 이벤트  (1) 2022.10.04