js
JS - 연산자 우선권
다음 표를 보면 우선 순위가 */% 보다 ++나 --가 우선 순위를 가집니다.
그림에서 제시된 대로라면, == 보다 < 나 <= 이 우선 순위를 가지기 때문에 다음 조건식은 참이 아닙니다.
산술 연산자를 예로 들자면, + - , 보다 * / % 이 우선 순위를 가지게 되므로 우리가 원하는 결과 값이 나오지 않습니다.
필요하다면, 우선권이 가장 높은 괄호로 묶을 수 있습니다.
예를 들어 (1 + 5) * 3 은 18 이라는 결과를 얻게 되는데, 연산자 우선권이 같으면, 왼쪽에서 오른쪽 비교하여 결합합니다.
순 위 | 연산자 | 결 합 |
---|---|---|
1 | ( ) | 묶음 |
2 | ++, -- | 무결합 |
3 | ! | 오른쪽 |
4 | *, /, % | 왼쪽 |
5 | +, -, . | 왼쪽 |
6 | <<, >> | 왼쪽 |
7 | <, <=, >, >=, <> | 무결합 |
8 | ==, !=, ===, !== | 무결합 |
9 | & | 왼쪽 |
10 | ^ | 왼쪽 |
11 | | | 왼쪽 |
12 | && | 왼쪽 |
13 | || | 왼쪽 |
14 | ? : | 왼쪽 |
15 | =, +=, -=, *=, /=, .=, %=, &=, |=, ^=, <<=, >>= | 오른쪽 |
16 | , | 왼쪽 |
<script>
document.write(1 > 2 == 2);
// 결과: false
document.write(2 * 3 > 4 + 5);
// 결과: false
</script>
산술 연산자를 예로 들자면, + - , 보다 * / % 이 우선 순위를 가지게 되므로 우리가 원하는 결과 값이 나오지 않습니다.
<script>
var a = 1 + 5 * 3;
document.write(a); // 결과: 16
var b = 5 * 3 + 1;
document.write(b); // 결과: 16
</script>
필요하다면, 우선권이 가장 높은 괄호로 묶을 수 있습니다.
예를 들어 (1 + 5) * 3 은 18 이라는 결과를 얻게 되는데, 연산자 우선권이 같으면, 왼쪽에서 오른쪽 비교하여 결합합니다.
<script>
// * / % 우선권이 같으면 *이 우선권을 가지며,
// 뒤이어 / 이 우선권을 가지고, 마지막으로 % 이므로
// (3 * 3) % 5 = 4 가 됩니다.
var a = 3 * 3 % 5;
document.write(a);
// 결과: 4
// 5 % (3 * 3) = 6 이 됩니다.
var b = 5 % 3 * 3;
document.write(b);
// 결과: 6
// = 보다 + 이 우선권을 가집니다.
// d = (e += 3)
var d = 1;
var e = 2;
d = e += 3;
document.write("d = " + d);
document.write("e = " + e);
// 결과: d = 5, e = 5
</script>
0 댓글