모던 자바스크립트 DeepDive 7장 연산자

박나영·2023년 2월 13일
0
post-thumbnail

이 글은 '모던 자바스크립트 DeepDive'를 참고하여 작성되었습니다.

7.1 산술 연산자

수학적 계산을 수행해 새로운 값을 만들고, 불가능할 경우 NaN 반환

7.1.1 이항 산술 연산자

  • 피연산자의 값을 변경하는 부수 효과 X

7.1.2 단항 산술 연산자

  • 1개의 피연산자를 산술 연산하여 숫자 값을 만듦
  • 증가, 감소(++ / --) 연산자는 부수효과 ㅇ(피연산자의 값을 변경하는 암묵적 할당)

증가/감소 연산자
  1. 전위 증가/감소 연산자
  • 먼저 피연산자 값을 증가/감소
  • 다른 연산을 수행
  1. 후위 증가/감소 연산자
  • 다른 연산을 수행 후
  • 피연산자 값을 증가/감소

예시

var x = 5, result;

// 후위
// result에 x(5) 할당
// x += 1
result = x++;
console.log(result, x); // 5 6

// 전위
// x += 1
// result에 x(7) 할당
result = ++x;
console.log(result, x); // 7 7
+ 단항 연산자
  • 피연산자에 어떠한 효과도 X
  • 숫자 타입이 아닌 피연산자에 사용할 경우 피연산자를 숫자 타입으로 변환한 값을 생성해 반환(마찬가지로 부수효과 X)
- 단항 연산자
  • 피연산자의 부호를 반전한 값을 반환
  • 숫자 타입이 아닌 피연산자에 사용할 경우 피연산자를 숫자 타입으로 변환한 값을 생성해 반환(마찬가지로 부수효과 X)

7.1.3 문자열 연결 연산자

  • 연산자는 피연산자 중 하나 이상이 문자열일 경우 문자열 연결 연산자로 동작한다.

예시

'1' + 2 // '12'

1 + true // 2
1 + false // 1
1 + null // 1

+undefined // NaN
1 + undefined // NaN

7.2 할당 연산자

  • 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당한다.
  • 할당 연산자는 좌항의 변수에 값을 할당하므로 부수 효과 ㅇ

할당문은 표현식일까?

할당문 x = 10; 은 10으로 평가되며, 할당문을 다른 변수에 할당할 수 있다.

즉, 할당문은 값으로 평가되는 표현식인 문이다.

var a, b, c;


// 할당문: 우항의 평가 결과를 좌항에 할당
// c = 0의 평가 결과인 0을 b에
// a에도 마찬가지로 할당
// 즉, 표현식이다.
a = b = c = 0;

console.log(a, b, c); 0 0 0

7.3 비교 연산자

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

7.3.1 동등/일치 비교 연산자

동등 비교 연산자와 일치 비교 연산자는 비교하는 엄격성의 정도에 차이가 있다.

  1. 동등 비교 연산자(==)
  • 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교
  • 타입은 다르더라도 같은 값이라면 true를 반환
  • 예측하기 어려운 결과를 만들어내므로 사용하지 않는 것이 권장된다.
  1. 일치 비교 연산자(===)
  • 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환
  • 주의할 점
    - NaN은 자기 자신과 일치하지 않는 유일한 값이다.
    - NaN인지 조사하려면 Number.isNaN을 사용
  • 유사한 메서드: Object.is

7.3.2 대소 관계 비교 연산자

크기를 비교하여 불리언 값을 반환한다.


7.4 삼항 조건 연산자

  • 조건식 ? 조건식 true일 때 반환할 값 : 조건식이 false일 때 반환할 값
  • if ...else 문과 유사하지만 삼항 조건 연산자 표현식은 값처럼 사용할 수 있다는 점이 다르다.
  • 즉, 삼항 조건 연산자 표현식은 값처럼 다른 표현식의 일부가 될 수 있다.

7.5 논리 연산자

논리 부정 연산자(!)
  • 언제나 불리언 값을 반환한다.
  • 단, 피연산자가 불리언 값일 필요는 없다.
논리합, 논리곱 연산자(||, &&)
  • 2개의 피연산자 중 어느 한쪽으로 평가받는다.

7.6 쉼표 연산자

var x, y, z;

x = 1, y = 2, z = 3; // 3

7.7 그룹 연산자

소괄호로 피연산자를 감싸는 그룹 연산자()는 자신의 피연산자인 표현식을 가장 먼저 평가한다. 따라서, 연산자의 우선순위를 조절하는데 사용할 수 있다.(연산자 우선순위가 가장 높음)


7.8 typeof 연산자

typeof 연산자는 피연산자의 데이터 타입을 문자열(string, number, booldean, undefined, symbol, object, function 중 1개)로 반환한다.

주의할 점

  • null 값을 typeof 연산을 했을 때 object를 반환한다.
  • 선언하지 않은 식별자에 typeof 연산을 했을 때 참조에러가 아닌 undefined를 반환한다.

7.9 지수 연산자

지수 연산자는 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭제곱하여 숫자 값을 반환한다. Math.pow()의 신버전이다.


7.11 연산자의 부수 효과

부수효과가 있는 연산자: 할당 연산자, 증가/감소 연산자, delete 연산자(객체의 프로퍼티 삭제)


7.12 연산자 우선순위

profile
바닐라라떼를 사랑하는 개발자

0개의 댓글