EtoC

연산자 본문

Language/JavaScript

연산자

게리드 2023. 8. 1. 14:02

연산자란

연산자는 하나 이상의 표션식을 대상으로 산술,할당,비교,논리,타입,지수연산등을 하나의 값으로 만드는작업을 수행한다.
연산자는 피연산자를 연산하여 새로운 값을 만드는데 피연산자는 값으로 평가될 수 있는 표현식이여야한다.

연산자의 부수효과

대부분의 연산자는 다른 코드에 영향을 주지않으나 일부 연산자는 다른 코드에 영향을 주는 부수효과를 가지고 있다.
대표적으로 부수효과가 있는 연산자는 할당 연산자(=), 증감연산자(++/--),delete연산자가있다.

연산자 예시
= 변수 값이 변하는 부수효과가있으며, 변수를 사용하는 다른 코드에 영향을 준다.
++/-- 피연산자의 값을 재할당하여 변수를 사용하는 다른코드에 영향을 준다.
delete 객체의 프로퍼티를 삭제하는 부수효과가있다.객체를 사용하는 다른코드에 영향을 준다.

1. 산술 연산자

산술 연산자는 학적 계산을 수행해 피연산자를 새로운 숫자 값으로 만드는 연산자이다.
산술 연산이 불가능한 경우 NaN을 반환한다.
산술연산자에는 단항 산술 연산자와 이항 산술 연산자가 있다.

단항 산술 연산자

  • 1개의 피연산자를 산술연산하여 숫자 값을 만든다.
단항 산술 연산자 설명 부수효과
++ 증가 O
-- 김소 O
+ 효과 x X
- 양수를 음수로, 음수르 양수로 반전한 값을 반환 X
  • 전위 증감 연산자: ++/--가 피연산자 앞에위치한 경우로 먼저 피연산자의 값을 증가/감소한 수 다른 연산을 수행한다.
  • 후위 증감 연산자: 다른 연산을 먼저 수행한 후 피연산자의 값을 증가/감소 시킨다.

이항 산술 연산자

  • 2개의 피연산자를 산술 연산하여 숫자값을 만들다.
  • 부수효과가없고 항상 새로운 값을 만든다.
이항 산술 연산자 설명
+ 덧셈
- 뺄셈
* 곱셈
/ 나눗셈
% 나머지

2. 할당 연산자

  • 우팡에있는 피연산자의 평가 결과를 좌항의 변수에 할당한다.
  • 값을 할당하므로 변수 값이 변하는 부수효과를 가진다.
할당 연산자 설명
= x=5
+= x += 5
-= x -= 5
*= x *= 5
/= x /= 5
%= x %=. 5

3. 비교 연산자

  • 좌항과 우항의 피연산자를 비교하고 결과값을 불리언으로 반환한다.
  • 부수효과는 없다.

동등/일치 비교 연산자

비교 연산자 이름 설명
== 동등 비교 좌항과 우항의 값이 같다
=== 일치 비교 좌항과 우항의 타입이 같다
!= 부동등 비교 좌항과 우항의 값이 다르다
!== 불일치 비교 좌항과 우항의 타입이 다르다

대소관계 비교 연산자

  • 피연산자의 크기를 비교하여 불리언 값을 반환한다.
대소 비교 연산자 설명
> 좌항이 우항보다 크다
< 좌항이 우항보다 작다
>= 좌항이 우항보다 크거나 같다
<= 좌항이 우항보다 작거나 같다

4. 삼항 조건 연산자

  • 조건식의 평가 결과에 따라 반환할 값을 경정한다.
조건식 ? 조건식이 true일때 반환할 값 : 조건식이 false일때 반환할 값

첫번째 피연산자가 true로 평가되면 두번째 피연산자를 반환하고, false로 평가되면 세번째 피연산자를 반환한다.
즉, 삼항조건 연산자는 두번째 피연산자 또는 세번째 피연산자로 평가되는 표현식이다.

  • 삼항조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문이다.
  • 삼항조건 연산자의 첫번째 피연산자는 조건식이므로 조건문이디때문에 if..else 문과 유사하게 처리할 수 있다.
  • 차이점은 삼항조건 표현식은 값처럼 사용할 수 있으나 if..else문은 표현식이 아닌 문이기 때문에 값처럼 사용할 수 없다.

5. 논리 연산자

  • 좌항과 우항의 피연산자를 놀리 연산 한다.
논리연산자 이름
|| 논리합(OR)
&& 논리곱(AND)
! 부정(NOT)

6. 쉼표 연산자

-왼쪽의 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환한다.

7. 그룹 연산자

  • 소괄호로 피연산자를 감싼 그룹을 우선적으로 평가한다.
  • 연산자의 우선순위를 조절 할 수 있으며, 연산순위가 가장 높다.

8. typeof 연산자

  • 피연산자의 데이터타입을 문자열로 반환한다.
  • string, nuumber, boolean, undefined, symbol, object, function 의 7가지중 하나로 반환한다.
  • null은 반환하지 않는다. typeof로 null을 연산해보면 object를 반환하는데 이것은 자바스크립트의 버그이다. null에는 ===(일치연산자)를 사용해야한다.
  • 선언하지 않은 식별자를 typeof로 연산하면 참조에러가 아닌 undefined를 반환한다.

9. 지수 연산자

  • ES7에서 도입된 연산자로, 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 사용하여 거듭제곱하여 숫자값을 반환한다.
  • 이항 연산자 중에서 우선순위가 제일 높다.
2 ** 2 //4
2 ** 3 //8
2 ** -2//0.25
(-2) ** 2 //음수를 거듭제곱하려면 괄호로 묶어야한다. 아니면 신텍스 에러가 뜬다.

10. 그 외의 연산자

연산자 이름
?. 옵셔널 체이닝 연산자
?? null 병합 연산자
delete 프로퍼티 삭제
new 생성자 함수 호출시 생성자 함수와 연결된 인스턴스인지 판별
instanceof 좌변의 객체가 우변의 생성자 함수와 연결된 인스턴스인지 판별
in 프로퍼티의 존재 확인

연산자 우선순위

  • 연산자가 복합적으로 이루어졌을때 어떤 연산자가 우선실행되는지의 순서이다.
우선순위 연산자
1 ()
2 new(메개변수 존재O), [].(), ?.
2 new(매개변수 존재X)
4 x++, x--
5 !x, +x, -x, ++x, --xx, typeof, delete
6 **(이상연산자중 최상위)
7 *, /, %
8 +, -
9 <, <=, >, >=, in, instanceof
10 ==, !=, ===, !==
11 ??(null 병합연산자)
12 &&
13 ||
14 ? ... : ...
15 할당 연산자
16 ,

연산자 결합순서

  • 연산자의 왼쪽부터 평가할지 오른쪽부터 평가할지를 나타내는 순서를 말한다.

| 결합순서 | 연산자 |
| :------: | :-------------------------------------------------------------------------: | --- | ------------------------------------ |
| 좌 -> 우 | +, -, /, <, <=, >, >=, &&, | | , ., [], (), ??, ?., in, insteanceof |
| 우 -> 좌 | ++, --, 할당연산자, !x, +x, -x, ++x, --x, typeof, delete, ? ... : ..., ** |