자바스크립트의 연산자는 대부분 다른 언어와 비슷하기 때문에 전반적인 설명은 아래에 정리한 우선순위를 보면 충분할 듯 합니다. 다만 오해의 소지가 있는 것들만 몇 개 정리하도록 하겠습니다.
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 |
!= |
|
'Javascript' 카테고리의 다른 글
자바스크립트 조건문과 반복문 - if, switch, for, while (0) | 2017.03.09 |
---|---|
자바스크립트 변수 선언 및 기본 데이터 타입 (0) | 2017.03.06 |
Node.js로 파일을 읽어서 특정 부분 찾기 (0) | 2017.02.13 |
Node.js 설치 및 Sublime Text를 이용한 실행 (1) | 2017.01.30 |