07장 연산자
모던 자바스크립트 Deep Dive : 7장 연산자에 대해 알아봅니다.
2025년 7월 16일3분 읽기
마지막 수정: 2025년 7월 16일
0. 서론
- 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만듭니다.
- 이때 연산의 대상을 피연산자라고 합니다.
- 피연산자, 연산자 표현식은 값으로 평가될 수 있는 표현식이어야 합니다.
- 피연산자 : '명사'역할 / 연산자 : '동사'역할
- 피연산자는 연산의 대상이 되어야 하므로 값으로 평가할 수 있어야 합니다.
1. 산술 연산자
- 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만듭니다.
- 산술 연산이 불가능할 경우,
NaN을 반환합니다.
1.1 이항 산술 연산자
- 2개의 피연산자를 산술 연산하여 숫자값을 만듭니다.
- 피연산자의 값을 변경하지 않고, 새로운 값을 만듭니다.
| 종류 | 의미 |
|---|---|
| + | 덧셈 |
| - | 뺄셈 |
| * | 곱셈 |
| / | 나눗셈 |
| % | 나머지 |
5 + 2; // 7
5 - 2; // 3
5 * 2; // 10
5 / 2; // 2.5
5 % 2; // 1
1.2 단항 산술 연산자
- 1개의 피연산자를 산술 연산해 숫자 값을 만듭니다.
| 종류 | 의미 | 부수효과 |
|---|---|---|
| ++ | 증가 | O |
| -- | 감소 | O |
| + | 아무 효과 없음 | X |
| - | 부호 반전 | X |
- 증가, 감소연산자는 피연산자의 값을 변경하고, 연산자 위치에 따라 의미가 달라집니다.
let x = 5,
result;
// 선할당 후증가
result = x++;
console.log(result, x); // 5 6
// 선증가 후할당
result = ++x;
console.log(result, x); // 7 7
// -- 감소도 동일
- 숫자 타입이 아닌 피연산자에
+또는-를 사용하면 피연산자를 숫자 타입으로 변환하여 반환합니다. -산술 연산자는 숫자의 부호를 반대로 변경합니다.- 숫자 타입으로 변환할 수 없을 경우
NaN을 반환합니다.
1.3 문자열 연결 연산자
+연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작합니다.- 아래와 같이, 개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동변환 되기도 합니다. 이를
암묵적 타입 변환,타입 강제 변환이라고 합니다.
// 문자열 연결 연산자
"1" + 2; // '12'
// true는 1로 타입 변환
1 + true; // 2
// false는 0으로 타입 변환
1 + false; // 1
// null은 0으로 타입 변환
1 + null; // 1
// undefined는 숫자로 타입 변환 불가
+undefined; // NaN
1 + undefined; // NaN
2. 할당 연산자
- 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당합니다.
- 좌항의 변수 값이 변하는 부수효과가 발생합니다.
| 할당 연산자 | 예 | 동일 표현 | 부수 효과 |
|---|---|---|---|
| = | x = 5 | x = 5 | O |
| += | x += 5 | x = x + 5 | O |
| -= | x -= 5 | x = x - 5 | O |
| *= | x *= 5 | x = x * 5 | O |
| /= | x /= 5 | x = x / 5 | O |
| %= | x %= 5 | x = x % 5 | O |
할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가됩니다.
따라서 할당문은 다른 변수에 할당할 수 있고, 여러 변수에 동일한 값을 연쇄 할당할 수도 있다.
let a, b, c;
a = b = c = 0;
console.log(a, b, c); // 0 0 0
3. 비교 연산자
- 좌항과 우항의 피연산자를 비교한 뒤, 그 결과를 불리언 값으로 반환합니다.