
연산자 : 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다.
피연산자 : 연산의 대상. 값으로 평가될 수 있는 표현식
산술 연산자
피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산이 불가능한 경우 NaN을 반환한다.
- 이항 산술 연산자
2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 모든 이항 산술 연산자는 피연산자의 값을 변경하는 부수 효과는 없다.
+(덧셈), -(뺄셈), *(곱셈), /(나눗셈), %(나머지)
- 단항 산술 연산자
1개의 피연산자를 산술하여 숫자 값을 만든다.
++(증가), --(감소), +, -
증가/감소(++/--) 연산자는 피연산자의 값을 변경하는 부수 효과가 있다. 증가/감소 연산을 하면 피연산자의 값을 변경하는 암묵적 할당이 이뤄진다.
증가/감소(++/--) 연산자는 위치에 의미가 있다.
· 피연산자 앞에 위치한 전위 증가/감소 연산자는 먼저 피연산자의 값을 증가/감소시킨 후, 다른 연산을 수행한다.
· 피연산자 뒤에 위치한 전위 증가/감소 연산자는 먼저 다른 연산을 수행한 후, 피연산자의 값을 증가/감소시킨다.
var x = 5, result;
// 선할당 후증가
result = x++;
console.log(result, x); // 5 6
// 선증가 후할당
result = ++x;
console.log(result, x); // 7 7
// 선할당 후감소
result = x--;
console.log(result, x); // 7 6
// 선감소 후할당
result = --x;
console.log(result, x); // 5 5
+ 단항 연산자는 피연산자에 어떠한 효과도 없다. 음수를 양수로 반전하지도 않는다.
+10; // 10
+(-10); // -10
- 단항 연산자는 피연산자의 부호를 반전한 값을 반환한다.
-(-10); // 10
+ 단항 연산자와 - 단항 연산자는 숫자 타입이 아닌 피연산자에 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다. 이때 피연산자를 변경하는 것은 아니고 숫자 타입으로 변환한 값을 생서애서 반환한다. 따라서 부수효과는 없다.
// 문자열을 숫자로 타입 변환한다.
+'1'; // 1
-'10'; // -10
// 불리언 값을 숫자로 타입 변환한다.
+true; // 1
+false; // 0
-true; // -1
// 문자열은 숫자로 타입 변환할 수 없으므로 NaN을 반환한다.
+'Hello'; // NaN
-'Hello'; // NaN
* 문자열 연결 연산자
+ 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다 : 암묵적 타입 변환 또는 타입 강제 변환
// 문자열 연결 연산자
'1' + 2; // '12'
// 산술 연산자
1 + 2; // 3
// true는 1로 타입 변환된다.
1 + true; // 2
// false는 0으로 타입 변환된다.
1 + false; // 1
// null은 0으로 타입 변환된다.
1 + null; // 1
// undefined는 숫자로 타입 변환되지 않는다.
+undefined; // NaN
1 + undefined; // NaN'javascript' 카테고리의 다른 글
| [js] 동적 타입 언어 (0) | 2022.11.26 |
|---|---|
| [js] 데이터 타입(feat. 원시 타입) (0) | 2022.11.18 |
| [js] 표현식과 문 (0) | 2022.11.13 |
| [js] 변수 (0) | 2022.11.05 |
| [js] 자바스크립트 다시 공부하기..! (0) | 2022.10.29 |