Front-end
[JavaScript] 연산자의 우선순위
코소미
2023. 4. 27. 10:26
자바스크립트 연산자의 우선 순위
자바스크립트의 연산자 우선수위에 대해서 알아보자.
하나의 연산식에 둘 이상의 연산자가 있는 경우
실행 순서는 연산자의 우선순위(precedence)에 따라 결정된다.
자바스크립트에는 기본적인 사칙연산 외에도 다양한 연산자가 있는데, 이 모든 연산자에는 우선순위가 매겨져 있다.
우선순위 숫자가 클수록 먼저 실행이 된다.
순위가 같으면 대부분은 왼쪽부터 시작해서 오른쪽으로 연산이 수행되는데,
간혹 = 이나 ** 같은 몇몇 연산은 반대로 하는 경우도 있으니 잘 알아두자 !
🔸 우선순위연산자 유형기호 표
21 | 그룹 | (...) |
... | ||
17 | 논리 NOT | ! ... |
17 | typeof | typeof ... |
16 | 거듭제곱 | ... ** ... |
15 | 곱셈 | ... * ... |
15 | 나눗셈 | ... / ... |
15 | 나머지 | ... % ... |
14 | 덧셈 | ... + ... |
14 | 뺄셈 | ... - ... |
... | ||
12 | 미만 | ... < ... |
12 | 이하 | ... <= ... |
12 | 초과 | ... > ... |
12 | 이상 | ... >= ... |
11 | 동등 | ... == ... |
11 | 부등 | ... != ... |
11 | 일치 | ... === ... |
11 | 불일치 | ... !== ... |
... | ||
6 | 논리 AND | ... && ... |
5 | 논리 OR | ... II ... |
... | ||
3 | 할당 | ... = ... |
🔸 예시
typeof (6 * 2 === 11 || 13 - 7 < 7 && !true);
typeof 연산자, 가장 높은 우선순위인 괄호가 있으니 괄호 내부를 먼저 연산해야 한다.
괄호 내부에서도 다양한 연산자가 있다.
다시 이 괄호 내부에서 가장 높은 우선순위는 NOT연산자를 먼저 연산해주고
true의 NOT연산이니깐, false 이다.
typeof (6 * 2 === 11 || 13 - 7 < 7 && false);
그 다음으로 높은 우선순위는 사칙연산이므로, 각각의 연산을 실행하면 아래와 같은 코드가 나온다.
typeof (12 === 11 || 6 < 7 && false);
그 다음으로 높은 연산자는 비교 연산이다.
typeof (false || true && false);
이제 남은건 논리 연산이다. 우선순위 표를 보면, AND연산이 OR연산보다 우선순위가 한 단계 높다.
typeof (false || false);
true && false의 연산 결과는 false이니까, 마지막 연산은 false || false가 된다.
typeof false;
결국 이 연산의 마지막은 typeof false가 되고, 이 모든 연산의 결과값은 문자열 'boolean'이 된다.