자바스크립트 연산자 우선순위 순서는 괄호 → 증감 연산자 → 산술 연산자 → 비교 연산자 → 논리 연산자 → 대입 연산자 순서입니다. 괄호가 가장 순위가 높습니다. 증감 연산자와 NOT 논리 연산자는 산술 연산자보다 우선순위가 높습니다. AND/OR 논리 연산자는 비교 연산자 보다 순위가 아래에 위치합니다. 대입 연산자는 마지막 단계에서 연산됩니다.
자바스크립트 연산자 우선순위
자바스크립트 연산자 우선순위 순서를 비트 연산자를 제외하고 비교한 표입니다.
순위 | 기능 | 연산자 | |||||
---|---|---|---|---|---|---|---|
1 | 괄호 | () |
|||||
2 | 증감/논리 연산자 not | ++ |
-- |
! |
|||
3 | 산술 연산자 곱셈 | * |
/ |
% |
|||
4 | 산술 연산자 덧셈 | + |
- |
||||
5 | 비교 연산자 대소 | < |
<= |
> |
>= |
||
6 | 비교 연산자 같음 | == |
=== |
!= |
!== |
||
7 | 논리 연산자 and | && |
|||||
8 | 논리 연산자 or | || |
|||||
9 | 대입 연산자 | = |
+= |
-= |
*= |
/= |
%= |
연산자 우선순위 예제1
괄호안의 값이 먼저 계산됩니다. 가장 안쪽의 (a + d)
인 9
의 결과가 먼저 도출됩니다.
(a + d) * ++c
이 식에서 *
곱하기 연산자보다 ++
증감 연산자가 먼저 적용됩니다. ++c
와 같은 전치 증감 연산자는 먼저 더해지므로 c
의 변수값 5
에 1
을 더해서 6
이 먼저 되야 합니다.
(a + d) * ++c = (9) * (1 + 5) = 54
>
초과 연산자의 우항의 a * d / b
는 곱셈과 나눗셈이므로 순서와 상관없이 계산하면 3 * 6 / 9 = 2
가 나옵니다.
document.write(54) > (a * d / b = 2)
최종적으로 54 > 2
의 비교이므로 비교 연산자로 true
를 반환합니다.
var a = 3, b = 2;
var c = 5, d = 6;
document.write(((a + d) * ++c) > (a * d / b));
연산자 우선순위 예제2
괄호가 1순위이므로 (d / a)
, (b % c)
, (a + d)
, (c + b)
를 먼저 연산합니다.
document.write((3) < (2) || (12) >= (12));
or 논리 연산자 ||
보다 비교 연산자(><, >=
)가 우선순위가 먼저입니다. 따라서 각 부등호를 먼저 풀이합니다.
document.write((false) || (true));
마지막으로 or 논리 연산자 ||
기호는 한 쪽만 true
여도 true
를 반환하므로 최종 연산의 답은 true
가 됩니다.
var a = 3, b = 7;
var c = 5, d = 9;
document.write((d / a) < (b % c) || (a + d) >= (c + b));
연산자 우선순위 예제3
대입 연산자는 우선순위가 가장 낮습니다. a *= b + c
의 연산 순서는 대입 연산자인 *=
보다 산술 연산자인 +
가 먼저 진행됩니다.
그래서 a *= b + c
의 결과는 a *= 12
이 됩니다. 그래서 a *= 12는 a = a * 12
이므로, 3 * 12 = 36
이 정답입니다.
var a = 3, b = 5, c = 7;
document.write(a *= b + c, "</br>");
반면 똑같은 변수에 일반 사칙연산에서는 곱셈 *
기호가 먼저 처리 됩니다.
var a = 3, b = 5, c = 7;
document.write(a * b + c);
a * b + c
의 연산 순서는 15 + c
가 됩니다. 그래서 답이 22
가 됩니다.