Javascript Deep Dive/연산자

산술 연산자

FE묭묭 2022. 9. 8.

산술 연산자 란?

  • 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다.
  • 산술연산이 불가능 한 경우, NaN을 반환한다.
  • 피연산자의 개수에 따라 이항,단항 산술 연산자로 구분한다.

이항 산술 연산자( 덧셈 / 뺄셈 / 곱셈 / 나눗셈 / 나머지 )

  • 이처럼, 2개의 피 연산자를 산술하여 숫자 값을 만드는 것을 이항 산술 연산자 라고 한다.
  • 모든 이항 산술 연산자는 피연산자의 값을 변경하는 "부수 효과"가 없다.
  • 부수 효과가 없어, 어떤 산술 연산을 해도 피연산자의 값이 바뀌는 경우는 없고 언제나 새로운 값을 만든다.

단항 산술 연산자( ++ / -- / + / - )

  • 1개의 피 연산자를 산술 연산하여 숫자 값을 만드는 것을 단항 산술 연산자 라고 한다.
  • ++ / -- 증가/감소 연산자는 피연산자의 값을 변경하는 "부수 효과"를 가지고 있다.
var x = 1;
x++; // x = 2가 된다.

var y = 2;
y--; // y = 1이 된다.
  • - 단항 연산자는 피연산자의 부호를 반전한 값을 반환한다.
  • - , + 단항 연산자는 숫자타입이 아닌 피연산자에 사용하면 피연산자를 숫자 타입으로 변환하여 반환한다.
  • 이 때 피연산자를 변경하는 게 아니고 "부호를 반전한 값"을 생성해 반환한다. 
  • 따라서 부수효과는 없다.
// 부호를 반전
-(-10); // -> 10

// 문자열을 숫자로 타입변환한다.
-'10'; // -> -10

// 불리언 값을 숫자로 타입변환한다.
-true; // -> -1

// 문자열은 숫자로 타입변환할 수 없으므로 NaN을 반환한다.
-'Hello'; // -> NaN

문자열 연결 연산자

  • + 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다.
  • 그 외는 산술 연산자로 동작한다.
// 문자열 연결 연산자
'1' + 2 ; // -> '12'
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

 

댓글