피연산자 | ‘값’이라는 명사의 역할 | 값으로 평가될 수 있는 표현식 |
---|---|---|
연산자 | ‘피연산자를 연산하여 새로운 값을 만드는다’라는 동사의 역할 | 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행 |
연산자 표현식 | 피연산자와 연산자의 조합 | 값으로 평가될 수 있는 표현식 |
피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다.
산술 연산이 불가능한 경우, NaN을 반환한다.
산술 연산자는 피연산자의 개수에 따라 이항 산술 연산자와 단항 산술 연산자로 구분할 수 있다.
2개의 피연산자를 산술 연산하여 숫자 값을 만든다.
피연산자의 값을 변경하는 부수 효과(side effect)가 없다.
이항 산술 연산자 | 의미 | 부수 효과 |
---|---|---|
+ | 덧셈 | X |
- | 뺄셈 | X |
* | 곱셈 | X |
/ | 나눗셈 | X |
% | 나머지 | X |
1개의 피연산자를 산술 연산하여 숫자 값을 만든다.
피연산자의 값을 변경하는 부수 효과(side effect)가 있는 연산자도 존재한다.
단항 산술 연산자 | 의미 | 부수 효과 |
---|---|---|
++ | 증가 | O |
-- | 감소 | O |
+ | 효과 X, 숫자 타입이 아닌 피연산자를 숫자 타입으로 반환한다. | X |
- | 피연산자의 부호를 반전한 값을 반환한다. | |
숫자 타입이 아닌 피연산자를 숫자 타입으로 반환한다. | X |
증가/감소 연산을 하면 피연산자의 값을 변경하는 암묵적 할당이 이루어진다 = 부수 효과가 있다.
증가/감소(++/--) 연산자는 위치에 의미가 있다.
| 피연산자의 앞에 위치한 전위 증가/감소 연산자
(prefix increment/decrement ooperator) | 먼저 피연산자의 값을 증가/감소시킨 후, 다른 연산을 수행한다. |
---|---|
피연산자의 뒤에 위치한 후위 증가/감소 연산자 | |
(postfix increment/decrement ooperator) | 먼저 다른 연산을 수행한 후, 피연산자의 값을 증가/감소시킨다. |
+true; // -> 1
+false; // -> 0
+null; // -> 0
+undefined; // -> NaN (undefined는 숫자로 타입 변환되지 않는다.)
암묵적 타입 변환 또는 타입 강제 변환 관련은 09장. 타입 변환과 단축 평가 참조
우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.
할당 연산자는 좌항의 변수에 값을 할당하므로 부수 효과(side effect)가 있다.
할당 연산자 | 표현 및 사용 예시 | 부수 효과 |
---|---|---|
= | (변수) = (피연산자의 평가 결과) |
O |
+= | (변수) += (피연산자의 평가 결과) |
O |
-= | (변수) -= (피연산자의 평가 결과) |
O |
*= | (변수) *= (피연산자의 평가 결과) |
O |
/= | (변수) /= (피연산자의 평가 결과) |
O |
%= | (변수) %= (피연산자의 평가 결과) |
O |
할당문은 값으로 평가되는 표현식이 문으로서 할당된 값으로 평가된다.
할당문을 다른 변수에 할당하는 것도 가능하기 때문에, 여러 변수에 동일한 값을 연쇄 할당할 수 있다.
var a, b, c;
a = b = c = ( 값 ) // 연쇄 할당, 할당 순서는 우항에서 좌항이다.