[JS] 연산자

KJA·2022년 6월 9일
0

용어

피연산자

연산자가 연산을 수행하는 대상입니다. 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를 평가하면 ab번 곱한 값이 반환됩니다.

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

증가·감소 연산자

후위형(postfix form)

  • counter++와 같이 피연산자 뒤에 올 때
  • 값을 증가시키지만, 증가 전의 기존값을 사용하려면 후위형 증가 연산자를 사용하면 됩니다.
let counter = 1;
let a = counter++; // (*) ++counter를 counter++로 바꿈

alert(a); // 1

(*)로 표시한 줄의 후위형 counter++counter를 증가시키긴 하지만, 증가 전의 기존 값을 반환합니다. 따라서 alert1을 표시합니다.

전위형(prefix form)

  • ++counter와 같이 피연산자 앞에 올 때
  • 값을 증가시키고 난 후, 증가한 값을 바로 사용하려면 전위형 증가 연산자를 사용하면 됩니다.
let counter = 1;
let a = ++counter; // (*)

alert(a); // 2

(*)로 표시한 줄의 전위형 ++countercounter를 증가시키고 새로운 값 2를 반환합니다.

0개의 댓글