다음 표를 보면 우선 순위가 */% 보다 ++나 --가 우선 순위를 가집니다.

순 위 연산자 결 합
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 댓글