[자바스크립트 Deep Dive] 07장. 연산자

lemythe423·2023년 6월 25일
0

연산자

하나 이상의 표현식(값으로 평가되는 문) 을 대상으로 여러 가지 연산을 수행하여 하나의 값을 만드는 것

  • 피연산자 : 연산의 대상

1. 산술 연산자

피연산자를 대상으로 사칙연산을 수행해 새로운 숫자 값을 만듦
산술 연산이 불가능하다면 NaN 반환

이항 산술 연산자

  • 2개의 피연산자를 사용하여 숫자 값 만듦
  • 피연산자의 값은 변경되지 않음

단항 산술 연산자

  • 1개의 피연산자를 산술 연산하여 숫자 값 만듦
  • 피연산자의 값이 변경되는 부수 효과(side effect) 발생
var x = 5, result;

// result에 x의 값인 5가 할당됨
// 단항 산술 연산자에 의해 피연산자인 x의 값이 6으로 변경됨
// 연산자가 피연산자의 뒤에 존재하기 때문에 먼저 다른 연산을 수행한 후, 피연산자의 값을 변경
result = x++;
console.log(result, x); // 5 6

// 연산자가 피연산자의 앞에 존재하므로 피연산자의 값을 변경한 후, 다른 연산이 수행됨
result = ++x;
console.log(result, x); // 6 6
  • 숫자 타입이 아닌 피연산자에 +연산자를 사용하면 숫자 타입으로 반환
  • 피연산자를 변경하는 부수 효과는 발생하지 않음
var x = '1';

console.log(+x); // 1 숫자
console.log(x); // '1' 문자

문자열 연결 연산자

  • 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작
  • 개발자의 의도와 상관없이 암묵적으로 타입이 변환되며 이를 암묵적 타입 변환 또는 타입 강제 변환이라 함
'1' + 2; // '12' 문자

2. 할당 연산자

  • 할당 연산자에는 =, +=, -=, *=, /=, %= 가 있음

    우항의 피연산자 평가 결과를 좌항에 있는 변수에 할당
    변수의 값이 변경됨

  • 할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가됨

  • x = 10은 x에 할당된 숫자 10으로 평가

var x;

console.log(x = 10); // 10

3. 비교 연산자

  • 좌항과 우항의 피연산자를 비교한 다음 그 결과를 불리언 값으로 반환

동등 비교 연산자

  • 좌항과 우항의 피연산자 비교 전에 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교
5 == 5; // true
5 == '5'; // false

일치 비교 연산자

  • 타입도 같고 값도 같은 경우에 한하여 true 반환
  • 암묵적 타입 변환이 발생하지 않음
5 === '5' // false

// NaN은 자신과 일치하지 않는 유일한 값
NaN === NaN; // false

// 숫자가 NaN인지 조사하려면 빌트인 함수 Number.isNaN사용
Number.isNaN(NaN);

4. 삼항 조건 연산자

  • 조건식의 평가 결과에 따라 반환할 값 결정
  • 첫 번째 피연산자가 true로 평가되면 두 번째 피연산자 반환,
  • 첫 번째 피연산자가 false로 평가되면 세 번째 피연산자 반환
  • 평가 결과가 불리언이 아니면 암묵적 타입 변환 발생
  • 값으로 평가할 수 있는 표현식인 문
    = 값처럼 사용 할 수 있음
var result = score >= 20 ? 'pass' : 'fail';

5. 논리 연산자

  • 우항과 좌항의 피연산자를 논리 연산

그외 연산자

  • 쉼표 연산자 : 왼쪽 피연산자부터 차례대로 평가하며 마지막 피연산자의 평가 결과를 반환
  • 그룹 연산자 : 피연산자인 표현식을 가장 먼저 평가하여, 연산자의 우선순위를 조절할 수 있는 연산자
  • typeof 연산자 : 피연산자의 데이터 타입 반환
  • 지수 연산자 : 좌항의 피연산자를 밑으로 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값 반환
profile
아무말이나하기

0개의 댓글