연산자가 연산을 수행하는 대상입니다. 5*2
에는 왼쪽 피연산자 5
와 오른쪽 피연산자 2
, 총 두개의 피연산자가 있습니다. 피연산자는 인수(argument)
라는 용어로 불리기도 합니다.
피연산자를 하나만 받는 연산자를 단항(unary)연산자
라고 부릅니다. 피연산자의 부호를 뒤집는 단항 마이너스 연산자 -
는 단항 연산자의 대표적인 예입니다.
let x = 1;
x = -x;
console.log(x); // -1, 단항 마이너스 연산자는 부호를 뒤집습니다.
두 개의 피연산자를 받는 연산자는 이항(binary)연산자
라고 부릅니다. 마이너스 연산자는 아래와 같이 이항 연산자로 쓸 수도 있습니다.
let x = 1, y = 3;
alert( y - x ); // 2, 이항 마이너스 연산자는 뺄셈을 해줍니다.
위와 같이 부호를 반전해주는 단항 마이너스 연산자와 뺄셈에 쓰이는 이항 마이너스 연산자(뺄셈 연산자)는 기호는 같지만 수행하는 연산이 다릅니다. 두 연산을 구분하는 기준은 피연산자의 개수
입니다.
+
-
*
/
%
**
a ** b
를 평가하면 a
를 b
번 곱한 값이 반환됩니다.
alert( 2 ** 2 ); // 4 (2 * 2)
alert( 2 ** 3 ); // 8 (2 * 2 * 2)
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2)
1/2
을 사용하면 제곱근을 구할 수 있습니다.
alert( 4 ** (1/2) ); // 2 (1/2 거듭제곱은 제곱근)
alert( 8 ** (1/3) ); // 2 (1/3 거듭제곱은 세제곱근)
이항 연산자 +
의 피연산자로 문자열이 전달되면 덧셈 연산자는 덧셈이 아닌 문자열을 병합(연결)합니다.
const word = 'hello' + ' world!'
console.log(word) // hello world!
이항 연산자 +
를 사용할 때는 피연산자 중 하나가 문자열
이면 다른 하나도 문자열로 변환
됩니다.
console.log('1' + 2) // 12
console.log('2' + 4) // 24
// 2 + 2가 먼저 더해지고, 더해진 숫자와 문자열 '4'와 병합
console.log(2 + 2 + '4') // 44
문자열과 숫자를 -
경우 문자열이 숫자로 바뀌며 연산이 진행됩니다.
// '2'가 숫자로 바뀐 후 계산
console.log( 6 - '2'); // 4
console.log( 6 / '2'); // 3
피연산자가 숫자가 아닌 경우엔 숫자형으로의 변환이 일어납니다.
// 숫자에는 아무런 영향을 미치지 않습니다.
const x = 1;
console.log( +x ); // 1
const y = -2;
console.log( +y ); // -2
// 숫자형이 아닌 피연산자는 숫자형으로 변화합니다.
console.log( +true ); // 1
console.log( +"" ); // 0
let apples = "2";
let oranges = "3";
// 이항 덧셈 연산자가 적용되기 전에, 두 피연산자는 숫자형으로 변화합니다.
console.log( apples + oranges ); // 23
console.log( +apples + +oranges ); // 5
counter++
와 같이 피연산자 뒤에 올 때증가 전의 기존값
을 사용하려면 후위형 증가 연산자를 사용하면 됩니다.let counter = 1;
let a = counter++; // (*) ++counter를 counter++로 바꿈
alert(a); // 1
(*)
로 표시한 줄의 후위형 counter++
는 counter
를 증가시키긴 하지만, 증가 전의 기존 값을 반환합니다. 따라서 alert
는 1
을 표시합니다.
++counter
와 같이 피연산자 앞에 올 때let counter = 1;
let a = ++counter; // (*)
alert(a); // 2
(*)
로 표시한 줄의 전위형 ++counter
는 counter
를 증가시키고 새로운 값 2
를 반환합니다.