본문 바로가기

Javascript

자바스크립트 연산자 및 우선순위 정리

자바스크립트의 연산자는 대부분 다른 언어와 비슷하기 때문에 전반적인 설명은 아래에 정리한 우선순위를 보면 충분할 듯 합니다. 다만 오해의 소지가 있는 것들만 몇 개 정리하도록 하겠습니다.


1) / 연산자

자바스크립트는 숫자가 모두 64비트 double 형이기 때문에 5 / 2 의 값이 C나 Java처럼 2가 아닌 2.5가 되는 것을 주의해야 합니다.


console.log(5/2);   // 2.5


2) typeof null

이전 글(http://zeany.net/56) 에서도 살펴봤는데, null이 할당된 변수의 typeof나 null 자체의 typeof는 null이 아닌 object 입니다.


var x = null;


console.log(x);   // null

console.log(typeof x);   // object

console.log(typeof null);   // object


3) == 와 === 

둘 다 두 값이 일치하는 지를 비교하지만, == 는 가능하면 형 변환을 거쳐서 어떻게든 true를 만들려고 하지만, === 는 형 변환 없이 그대로를 비교하게 됩니다. 그러니, 가급적 비교할 때는 === 를 사용하시기 바랍니다.


console.log(true == 1);   // true

console.log(false == 0);   // true

console.log(0 == "0");   // true


console.log(true === 1);   // false

console.log(false === 0);   // false

console.log(0 === "0");   // false


참고로, ==의 부정은 !=이고, ===의 부정은 !== 입니다.


4) **

제곱 (Exponentiation)을 뜻하는 이 연산자는 추가된지 얼마되지 않아 브라우저에 따라 동작하지 않을 수 있으니 사용하지 마세요.



연산자 우선순위는 다음과 같습니다.

우선순위 

연산자 

설명 

19

( )

 괄호

18

.

 객체의 멤버

18

[]

 객체의 멤버

17

()

 함수 호출

17

new

 객체 생성

16

++

 증가 (postfix) ex) i++

16

--

 감소 (postfix)

15

++

 증가 (prefix) ex) ++i

15

--

 감소 (prefix)

15

!

 논리 부정

15

typeof

 타입

14

*

 곱하기

14

/

 나누기

14

%

 나머지

13

+

 더하기

13

-

 빼기

12

<<

 왼쪽 shift

12

>>

 오른쪽 shift

12

>>>

 부호 무시 오른쪽 shift

11

<

 보다 작은

11

<=

 작거나 같은

11

>

 보다 큰

11

>=

 크거나 같은

10

==

 일치 (형변환)

10

===

 일치

10

!=

 불일치 (형변환)

10

!==

 불일치

6

&&

 논리 AND

5

||

 논리 OR

3

=

 할당

3

+=

 

3

-=

 

3

*=

 

3

%=

 

3

<<=

 

3

>>=

 

3

>>>=

 

3

&=

 

3

^=

 

3

!=