레커
[JS]연산자 및 우선 순위 본문
우선순위는 평소에 덧셈 곱셈을 할 때도 () 에 따라서 어느 부분은 먼저 연산을 할 지 결정해주는 역할을 한다.
3 + 4 * 6 = 27
( 3 + 4 ) * 6 = 42
Javascript 에서도 연산자를 통해 작성한 순서를 조절하는 역할을 해준다.
우선순위
|
연산자
|
기능
|
결합 규칙
|
예시
|
1(최상위)
|
( )
|
Expression Grouping
|
왼쪽에로 오른쪽으로
|
(100 + 50) * 3
|
2
|
.
|
Member Of
|
person.name
|
|
[ ]
|
person["name"]
|
|||
function ()
|
Function Call
|
myFunction()
|
||
?. (ES2020)
|
Optional Chaining ES2020
|
-
|
x ?. y
|
|
new
|
New with Arguments
|
-
|
new Date("June 5,2022")
|
|
3
|
new
|
New without Arguments
|
-
|
new Date()
|
4
|
++(후위연산)
|
Postfix Increment
|
오른쪽에서 왼쪽으로
|
i++
|
--(후위연산)
|
Postfix Decrement
|
i--
|
||
5
|
++(전위연산)
|
Prefix Increment
|
++i
|
|
--(전위연산)
|
Prefix Decrement
|
--i
|
||
6
|
!
|
Logical NOT
|
!(x==y)
|
|
~
|
Bitwise NOT
|
~x
|
||
+
|
Unary Plus
|
+x
|
||
-
|
Unary Minus
|
-x
|
||
typeof
|
Data Type
|
typeof x
|
||
void
|
Evaluate Void
|
void(0)
|
||
delete
|
Property Delete
|
delete myCar.color
|
||
7
|
**
|
Exponentiation ES2016
|
왼쪽에로 오른쪽으로
|
10 ** 2
|
8
|
*
|
Multiplication
|
10 * 5
|
|
/
|
Division
|
10 / 5
|
||
% |
Division Remainder
|
10 % 5
|
우선순위
|
연산자
|
기능
|
결합 규칙
|
예시
|
9
|
+
|
Addition
|
10 + 5
|
|
-
|
Subtraction
|
10 - 5
|
||
+
|
Concatenation
|
"John" + "Doe"
|
||
10
|
<<
|
Shift Left
|
x << 2
|
|
>>
|
Shift Right (signed)
|
x >> 2
|
||
>>>
|
Shift Right (unsigned)
|
x >>> 2
|
||
11
|
in
|
Property in Object
|
"PI" in Math
|
|
instanceof
|
Instance of Object
|
x instanceof Array
|
||
<
|
Less than
|
x < y
|
||
<=
|
Less than or equal
|
x <= y
|
||
>
|
Greater than
|
x > y
|
||
>=
|
Greater than or equal
|
x >= Array
|
||
==
|
Equal
|
x == y
|
||
===
|
Strict equal
|
x === y
|
||
!=
|
Unequal
|
x != y
|
||
!==
|
Strict unequal
|
x !== y
|
||
12
|
&
|
Bitwise AND
|
x & y
|
|
13
|
^
|
Bitwise XOR
|
x ^ y
|
|
14
|
|
|
Bitwise OR
|
x | y
|
|
15
|
&&
|
Logical AND
|
x && y
|
|
16
|
||
|
Logical OR
|
x || y
|
|
??
|
Nullish Coalescing ES2020
|
x ?? y
|
우선순위
|
연산자
|
기능
|
결합 규칙
|
예시
|
17
|
? : ( 3항연산자)
|
Condition
|
왼쪽에로 오른쪽으로
|
Condition ? "yes" : "no"
|
=
|
Simple Assignment
|
오른쪽에서 왼쪽으로
|
x = y
|
|
:
|
Colon Assignment
|
x: 5
|
||
+=
|
Addition Assignment
|
x += y
|
||
-=
|
Subtraction Assignment
|
x -= y
|
||
*=
|
Multiplication Assignment
|
x *= y
|
||
**=
|
Exponentiation Assignment
|
x **= y
|
||
/=
|
Division Assignment
|
x /= y
|
||
%=
|
Remainder Assignment
|
x %= y
|
||
<<=
|
Left Shift Assignment
|
x <<= y
|
||
>>=
|
Right Shift Assignment
|
x >>= y
|
||
>>>=
|
Unsigned Right Shift
|
x >>>= y
|
||
&=
|
Bitwise AND Assignmen
|
x &= y
|
||
|=
|
Bitwise OR Assignment
|
x |= y
|
||
^=
|
Bitwise XOR Assignment
|
x ^= y
|
||
&&=
|
Logical AND Assignment
|
x &&= y
|
||
||=
|
Logical OR Assignment
|
x ||= y
|
||
=>
|
Arrow
|
-
|
x => y
|
|
yield
|
Pause / Resum
|
-
|
yield x
|
|
yield*
|
Delegate
|
-
|
yield* x
|
|
...
|
Spread
|
-
|
... x
|
|
18
|
,
|
Comma
|
왼쪽에로 오른쪽으로
|
x , y
|