모던 javascript 튜토리얼

기본 연산자와 수학

crab. 2022. 6. 2. 08:32

용어: ‘단항’, ‘이항’, ‘피연산자’

  • • 피연산자(operand) 는 연산자가 연산을 수행하는 대상입니다.
  • 5 * 2에는 왼쪽 피연산자 5와 오른쪽 피연산자 2, 총 두 개의 피연산자가 있습니다.
  • '피연산자’는 '인수(argument)'라는 용어로 불리기도 합니다.
  • 피연산자를 하나만 받는 연산자는 단항(unary) 연산자 라고 부릅니다.
  • 피연산자의 부호를 뒤집는 단항 마이너스 연산자 -는 단항 연산자의 대표적인 예입니다.
let x = 1;

x = -x;
alert( x ); // -1, 단항 마이너스 연산자는 부호를 뒤집습니다.
  • 두 개의 피연산자를 받는 연산자는 이항(binary) 연산자라고 부릅니다.
  • 마이너스 연산자는 아래와 같이 이항 연산자로 쓸 수도 있습니다.
let x = 1, y = 3;
alert( y - x ); // 2, 이항 마이너스 연산자는 뺄셈을 해줍니다.

수학 연산자

  • %, 나머지 연산자, a % b는 a를 b로 나눈 후 그 나머지(remainder)를 정수로 반환해줍니다.
  • **, 거듭제곱 연산자, a ** b를 평가하면 a를 b번 곱한 값이 반환됩니다.

이항 연산자 ‘+’와 문자열 연결

  • 이항 연산자 +의 피연산자로 문자열이 전달되면 덧셈 연산자는 덧셈이 아닌 문자열을 병합(연결)합니다.
let s = "my" + "string";
alert(s); // mystring
  • 이항 연산자 +를 사용할 때는 피연산자 중 하나가 문자열이면 다른 하나도 문자열로 변환된다는 점에 주의해야 합니다.
alert( '1' + 2 ); // "12"
alert( 2 + '1' ); // "21"

단항 연산자 +와 숫자형으로의 변환

  • 숫자에 단항 덧셈 연산자를 붙이면 이 연산자는 아무런 동작도 하지 않습니다.
  • 그러나 피연산자가 숫자가 아닌 경우엔 숫자형으로의 변환이 일어납니다.
// 숫자에는 아무런 영향을 미치지 않습니다.
let x = 1;
alert( +x ); // 1

let y = -2;
alert( +y ); // -2

// 숫자형이 아닌 피연산자는 숫자형으로 변화합니다.
alert( +true ); // 1
alert( +"" );   // 0

할당 연산자

  • 자바스크립트에서 대부분의 연산자들은 값을 반환합니다. +와 -뿐만 아니라 = 역시 값을 반환하죠.
  • x = value을 호출하면 value가 x에 쓰여지고, 이에 더하여 value가 반환됩니다.
let a = 1;
let b = 2;

let c = 3 - (a = b + 1);

alert( a ); // 3
alert( c ); // 0
  • 할당 연산자는 아래와 같이 여러 개를 연결할 수도 있습니다(체이닝).
let a, b, c;

a = b = c = 2 + 2;

alert( a ); // 4
alert( b ); // 4
alert( c ); // 4
  • 이렇게 할당 연산자를 여러 개 연결한 경우, 평가는 우측부터 진행됩니다.

복합 할당 연산자

let n = 2;
n += 5; // n은 7이 됩니다(n = n + 5와 동일).
n *= 2; // n은 14가 됩니다(n = n * 2와 동일).

alert( n ); // 14

let n = 2;

n *= 3 + 5;

alert( n ); // 16  (*=의 우측이 먼저 평가되므로, 위 식은 n *= 8과 동일합니다.)

증가 감소 연산자

  • 증가(increment) 연산자++는 변수를 1 증가시킵니다.
  • 감소(decrement) 연산자--는 변수를 1 감소시킵니다.
  • ++와-- 연산자는 변수 앞이나 뒤에 올 수 있습니다.
  • 두 형의 차이는 ++/--의 반환 값을 사용할 때 드러납니다.
let counter = 1;
let a = ++counter; // (*)

alert(a); // 2

let counter = 1;
let a = counter++; // (*) ++counter를 counter++로 바꿈

alert(a); // 1

비트 연산자

  • 비트 AND ( & )
  • 비트 OR ( | )
  • 비트 XOR ( ^ )
  • 비트 NOT ( ~ )
  • 왼쪽 시프트(LEFT SHIFT) ( << )
  • 오른쪽 시프트(RIGHT SHIFT) ( >> )
  • 부호 없는 오른쪽 시프트(ZERO-FILL RIGHT SHIFT) ( >>> )

'모던 javascript 튜토리얼' 카테고리의 다른 글

if와 '?'를 사용한 조건 처리  (0) 2022.06.05
비교 연산자  (0) 2022.06.03
형 변환  (0) 2022.06.01
alert, prompt, confirm을 이용한 상호작용  (0) 2022.05.31
변수와 상수, 자료형  (0) 2022.05.30