Chapter3. 연산자
산술 연산자
모두 두 개의 피연산자를 갖는 이항 연산자.
피연산자의 결합 방향은 왼쪽에서 오른쪽이다.
아래는 연산자 우선순위 표다.
우선순위 | 연산자 | 설명 | 결합 방향 |
1 | () | 묶음(괄호) | - |
2 | . | 멤버 접근 | 왼쪽에서 오른쪽으로 |
new | 인수 있는 객체 생성 | - | |
3 | () | 함수 호출 | 왼쪽에서 오른쪽으로 |
new | 인수 없는 객체 생성 | 오른쪽에서 왼쪽으로 | |
4 | ++ | 후위 증가 연산자 | - |
-- | 후위 감소 연산자 | - | |
5 | ! | 논리 NOT 연산자 | 오른쪽에서 왼쪽으로 |
~ | 비트 NOT 연산자 | 오른쪽에서 왼쪽으로 | |
+ | 양의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
- | 음의 부호 (단항 연산자) | 오른쪽에서 왼쪽으로 | |
++ | 전위 증가 연산자 | 오른쪽에서 왼쪽으로 | |
-- | 전위 감소 연산자 | 오른쪽에서 왼쪽으로 | |
typeof | 타입 반환 | 오른쪽에서 왼쪽으로 | |
void | undefined 반환 | 오른쪽에서 왼쪽으로 | |
delete | 프로퍼티의 제거 | 오른쪽에서 왼쪽으로 | |
6 | ** | 거듭제곱 연산자 | 오른쪽에서 왼쪽으로 |
* | 곱셈 연산자 | 왼쪽에서 오른쪽으로 | |
/ | 나눗셈 연산자 | 왼쪽에서 오른쪽으로 | |
% | 나머지 연산자 | 왼쪽에서 오른쪽으로 | |
7 | + | 덧셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 |
- | 뺄셈 연산자 (이항 연산자) | 왼쪽에서 오른쪽으로 | |
8 | << | 비트 왼쪽 시프트 연산자 | 왼쪽에서 오른쪽으로 |
>> | 부호 비트를 확장하면서 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
>>> | 부호 비트를 확장하지 않고 비트 오른쪽 시프트 | 왼쪽에서 오른쪽으로 | |
9 | < | 관계 연산자(보다 작은) | 왼쪽에서 오른쪽으로 |
<= | 관계 연산자(보다 작거나 같은) | 왼쪽에서 오른쪽으로 | |
> | 관계 연산자(보다 큰) | 왼쪽에서 오른쪽으로 | |
>= | 관계 연산자(보다 크거나 같은) | 왼쪽에서 오른쪽으로 | |
instanceof | 인스턴스 여부 판단 | 왼쪽에서 오른쪽으로 | |
10 | == | 동등 연산자 | 왼쪽에서 오른쪽으로 |
=== | 일치 연산자 | 왼쪽에서 오른쪽으로 | |
!= | 부등 연산자 | 왼쪽에서 오른쪽으로 | |
!== | 불일치 연산자 | 왼쪽에서 오른쪽으로 | |
11 | & | 비트 AND 연산자 | 왼쪽에서 오른쪽으로 |
12 | ^ | 비트 XOR 연산자 | 왼쪽에서 오른쪽으로 |
13 | | | 비트 OR 연산자 | 왼쪽에서 오른쪽으로 |
14 | && | 논리 AND 연산자 | 왼쪽에서 오른쪽으로 |
15 | || | 논리 OR 연산자 | 왼쪽에서 오른쪽으로 |
16 | ? : | 삼항 연산자 | 오른쪽에서 왼쪽으로 |
17 | = | 대입 연산자 (=, +=, -=, *=, /=, %=, <<=, >>=, >>>=, &=, ^=, |=) | 오른쪽에서 왼쪽으로 |
18 | ... | 전개 | - |
19 | , | 쉼표 연산자 | 왼쪽에서 오른쪽으로 |
대입 연산자
대입 연산자 | 설명 |
= | 왼쪽 피연산자에 오른쪽 피연산자의 값을 대입함. |
+= | 왼쪽 피연산자의 값에 오른쪽 피연산자의 값을 더한 후, 그 결괏값을 왼쪽 피연산자에 대입함. |
-= | 왼쪽 피연산자의 값에서 오른쪽 피연산자의 값을 뺀 후, 그 결괏값을 왼쪽 피연산자에 대입함. |
*= | 왼쪽 피연산자의 값에 오른쪽 피연산자의 값을 곱한 후, 그 결괏값을 왼쪽 피연산자에 대입함. |
/= | 왼쪽 피연산자의 값을 오른쪽 피연산자의 값으로 나눈 후, 그 결괏값을 왼쪽 피연산자에 대입함. |
%= | 왼쪽 피연산자의 값을 오른쪽 피연산자의 값으로 나눈 후, 그 나머지를 왼쪽 피연산자에 대입함. |
증감 연산자
증감 연산자 | 설명 |
++x | 먼저 피연산자의 값을 1 증가시킨 후에 해당 연산을 진행함. |
x++ | 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 증가시킴. |
--x | 먼저 피연산자의 값을 1 감소시킨 후에 해당 연산을 진행함. |
x-- | 먼저 해당 연산을 수행하고 나서, 피연산자의 값을 1 감소시킴. |
증감 연산자의 연산 순서
피연산자의 어느 쪽에 위치하는가에 따라 연산의 순서가 다라진다.
C언어와 같으니깐 느낌적인 느낌으로 가면 된다.
비교 연산자
비교 연산자는 피연산자 사이의 상대적인 크기를 판단하여 참, 거짓을 반환한다.
비교 연산자
설명
==
왼쪽 피연산자와 오른쪽 피연산자의 값이 같으면 참을 반환함.
===
왼쪽 피연산자와 오른쪽 피연산자의 값이 같고, 같은 타입이면 참을 반환함.
!=
왼쪽 피연산자와 오른쪽 피연산자의 값이 같지 않으면 참을 반환함.
!==
왼쪽 피연산자와 오른쪽 피연산자의 값이 같지 않거나, 타입이 다르면 참을 반환함.
>
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크면 참을 반환함.
>=
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 크거나 같으면 참을 반환함.
<
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작으면 참을 반환함.
<=
왼쪽 피연산자의 값이 오른쪽 피연산자의 값보다 작거나 같으면 참을 반환함.
동등 연산자와 일치 연산자
동등연사자(==)
두 피연산자의 값이 서로 값으면 참을 반환한다.
타입이 서로 다르면 강제로 타입을 같게 변환하고, 값ㅇ르 비교한다.
일치연산자(===)
타입의 변환 없이 두 피연산자의 값이 같고, 타입도 같아야만 참을 반환
논리 연산자
논리 연산자 | 설명 |
&& | 논리식이 모두 참이면 참을 반환함. (논리 AND 연산) |
|| | 논리식 중에서 하나라도 참이면 참을 반환함. (논리 OR 연산) |
! | 논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (논리 NOT 연산) |
아래는 진리표다.
A | B | A && B | A || B | !A |
true | true | true | true | false |
true | false | false | true | false |
false | true | false | true | true |
false | false | false | false | true |
기타 연산자
문자열 결합 연산자
덧셈 연산자는 피연산자의 타입에 따라 두 가지 연산
둘 다 숫자면, 산술 연산
하나라도 문자열이면 문자열 결합
삼항 연산자
delete 연산자
피연산자인 객체, 객체의 프로퍼티 또는 배열의 요소 등을 삭제해준다.
삭제를 성공하면 true, 못하면 false
typeof 연산자
타입을 리턴해줌
값
typeof 연산자의 결괏값
숫자, NaN
"number"
문자열
"string"
true, false
"boolean"
null
"object"
undefined
"undefined"
함수
"function"
함수가 아닌 객체
"object"
instanceof 연산자
피연산자인 객체가 특정 객체의 인스턴스인지 아닌지를 확인해줌