반응형
연산자를 하나만 사용하는 경우도 있지만 여러가지를 복합적으로 사용하게 되는 경우도 발생한다.
따라서 연산자에도 우선 순위를 매겨 연산자의 실행 순서를 결정하고, 우선 순위가 높은 연산자가 먼저 실행된다.
특히, 우결합성이 있는 조건 연산자( ? : )와 우선순위가 헷갈리는 논리 AND, OR 연산자( &&, || )는 주의하여 사용하자.
공식 문서에 나와있는 연산자 우선 순위는 다음과 같고, 이를 전부 외울 수는 없다.
일반적으로 사람이 논리적으로 생각하는 방식 대로 우선 순위가 매겨져 있으나, 애매한 경우에는 괄호를 사용하여 해결하면 된다.
우선 순위 | 연산자 유형 | 결합성 | 연산자 |
21 | 그룹 | 없음 | ( … ) |
20 | 멤버 접근 | 좌결합성 | … . … |
계산된 멤버 접근 | 좌결합성 | … [ … ] | |
new (매개변수 리스트 존재) | 없음 | new … ( … ) | |
좌결합성 | … ( … ) | ||
Optional chaining | 좌결합성 | ?. | |
19 | new (매개변수 리스트 생략) | 우결합성 | new … |
18 | 후위 증가 | 없음 | … ++ |
후위 감소 | … -- | ||
17 | 논리 NOT | 우결합성 | ! … |
비트 NOT | ~ … | ||
단항 양부호 | + … | ||
단항 부정 | - … | ||
전위 증가 | ++ … | ||
전위 감소 | -- … | ||
typeof | typeof … | ||
void | void … | ||
delete | delete … | ||
await | await … | ||
16 | 거듭제곱 | 우결합성 | … ** … |
15 | 곱셈 | 좌결합성 | … * … |
나눗셈 | … / … | ||
나머지 | … % … | ||
14 | 덧셈 | 좌결합성 | … + … |
뺄셈 | … - … | ||
13 | 비트 왼쪽 시프트 | 좌결합성 | … << … |
비트 오른쪽 시프트 | … >> … | ||
비트 부호 없는 오른쪽 시프트 | … >>> … | ||
12 | 미만 | 좌결합성 | … < … |
이하 | … <= … | ||
초과 | … > … | ||
이상 | … >= … | ||
in | … in … | ||
instanceof | … instanceof … | ||
11 | 동등 | 좌결합성 | … == … |
부등 | … != … | ||
일치 | … === … | ||
불일치 | … !== … | ||
10 | 비트 AND | 좌결합성 | … & … |
9 | 비트 XOR | 좌결합성 | … ^ … |
8 | 비트 OR | 좌결합성 | … | … |
7 | 널 병합 연산자 | 좌결합성 | … ?? … |
6 | 논리 AND | 좌결합성 | … && … |
5 | 논리 OR | 좌결합성 | … || … |
4 | 조건 | 우결합성 | … ? … : … |
3 | 할당 | 우결합성 | … = … |
… += … | |||
… -= … | |||
… **= … | |||
… *= … | |||
… /= … | |||
… %= … | |||
… <<= … | |||
… >>= … | |||
… >>>= … | |||
… &= … | |||
… ^= … | |||
… |= … | |||
2 | yield | 우결합성 | yield … |
yield* | yield* … | ||
1 | 쉼표 / 시퀀스 | 좌결합성 | … , … |
[참고] developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/연산자_우선순위
반응형
'Javascript' 카테고리의 다른 글
[JavaScript] 함수/블록 기반 스코프 (0) | 2020.09.25 |
---|---|
[JavaScript] 렉시컬 스코프, Lexical Scope / 동적 스코프, Dynamic Scope (0) | 2020.09.22 |
[JavaScript] 스코프, Scope (0) | 2020.09.21 |
[JavaScript] 느슨한(==)/엄격한(===) 동등 비교, 추상 관계 비교 (0) | 2020.09.18 |
[JavaScript] 강제변환 - 암시적 강제변환, Implicit Coercion (0) | 2020.09.16 |
[JavaScript] 강제변환 - 명시적 강제변환, Explicit Coercion (0) | 2020.09.16 |