[모던 자바스크립트 Deep Dive] 자바스크립트의 연산자

이은지·2025년 1월 30일
0

모던 자바스크립트 Deep Dive 7장을 읽고 정리한 글이다.

  • 연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행하나의 값을 만든다
  • 피연산자
    - 연산의 대상
    - 값으로 평가될 수 있는 표현식이어야 함

1. 산술 연산자

  • 피연산자를 대상으로 수학적 계산을 수행해 숫자 값을 생성
  • 산술 연산이 불가능한 경우 NaN을 반환
  • 피연산자의 개수에 따라 이항 산술 연산자와 단항 산술 연산자로 구분

1.1 이항 산술 연산자

  • 2개의 피연산자를 산술 연산
  • 피연산자의 값을 변경하는 부수 효과가 없음
  • 종류: +, -, *, /, %

1.2 단항 산술 연산자

  • 1개의 피연산자를 산술 연산
  • 종류: ++, --, +, -
    • ++, -- 연산자는 증가/감소 연산을 하면 피연산자의 값을 변경하는 암묵적 할당이 이뤄짐

1.3 문자열 연결 연산자

    • 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작

2. 할당 연산자

  • 우항에 있는 피연산자의 평가 결과를 좌항에 있는 변수에 할당
  • 종류: =, +=, -=, *=, /=, %=
  • 할당문은 값으로 평가되는 표현식인 문으로서 할당된 값으로 평가됨
    • 이러한 특징을 활용해 여러 변수에 동일한 값을 연쇄 할당 가능
var a, b, c;
//연쇄 할당. 오른쪽에서 왼쪽으로 진행
// 1. c = 0 0으로 평가된다
// 2. b = 0 0으로 평가된다
// 3. a = 0 0으로 평가된다
a = b = c = 0;

3. 비교 연산자

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

3.1 동등/일치 비교 연산자

  • 동등 비교 연산자는 느슨한 비교. 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치 시킨 후 같은 값인지 비교
    • == : x와 y의 값이 같음
    • != : x와 y의 값이 다름
  • 일치 비교 연산자는 엄격한 비교
    • === : x와 y의 값과 타입이 같음
    • !== : x와 y의 값과 타입이 다름
  • Object.is 메서드
    • 예측 가능한 정확한 결과를 비교 반환
-0 === +0 //true
Object.is(-0, +0) //false

NaN === NaN; //false
Object.is(NaN, NaN) //true

3.2 대소 관계 비교 연산자

  • 피연산자의 크기를 비교하여 불리언 값 반환
  • 종류 : >, <, >=, <=

4. 삼항 조건 연산자

  • 조건식의 평가 결과에 따라 반환할 값을 결정
  • 삼항 조건 연산자 표현식

    조건식 ? 조건식이 true일 때 반환할 값: 조건식이 false일 때 반환할 값

  • 삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문이다
  • 조건에 따라 어떤 값을 결정해야 한다면 해당 표현식일 사용하는 편이 유리, 조건에 따라 수행해야 할 문이 하나가 아니라 여러 개라면 if..else문의 가독성이 더 좋음

5. 논리 연산자

  • 우항과 좌항의 피연산자를 논리 연산 수행
  • 종류 : ||(OR), &&(AND), !(NOT)
  • !연산자는 언제나 불리언 값을 반환. 만약 피연산자가 불리언 값이 아니면 불리언 타입으로 암묵적 타입 변환
  • ||또는 &&연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가됨

6. 쉼표 연산자

  • 왼쪽 피연산자부터 차례대로 피연산자를 평가하고 마지막 피연산자의 평가가 끝나면 마지막 피연산자의 평가 결과를 반환
var x, y, z;

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

7. 그룹 연산자

  • 소괄호로 피연산자를 감싸는 연산자
  • 그룹 연산자를 사용하면 연산자의 우선순위를 조절 가능

8. typeof 연산자

  • 피연산자의 데이터 타입을 문자열로 반환
  • string, number, boolean, undefined, symbol, object, function 중 하나를 반환
  • typeof로 null 값을 연산해보면 null이 아닌 object를 반환
    • 값이 null 타입인지 확인할 땐느 일치 연산자를 사용할 것
  • 선언하지 않은 식별자를 typeof 연산자로 연산해보면 undefined를 반환

9. 지수 연산자

  • 좌항의 피연산자를 밑으로 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환

10. 그 외의 연산자

  • ?, ??, delete, new, instanceof, in (다른 내용에서 살펴볼 것)

11. 연산자의 부수 효과

  • 할당 연산자(=), 증가/감소 연산자(++,--), delete 연산자는 다른 코드에 영향을 주는 부수 효과가 있음
  • 할당 연산자는 변수 값이 변하는 부수 효과가 있어 해당 변수를 사용하는 다른 코드에 영향을 줌
  • 증가/감소 연산자는 피연산자의 값을 변경하는 부수 효과가 있음
  • delete 연산자는 객체의 프로퍼티를 삭제하는 부수 효과가 있어 해당 객체를 사용하는 다른 코드에 영향을 줌

12. 연산자 우선순위

우선순위연산자설명
1괄호/대괄호()[]
2단항 연산자!, ++, --
3곱셈/나눔셈 연산자*, /, %
4덧셈/뺄셈 연산자+, -
5비교 연산자>, >=, <, <=
6비교 연산자==, ===, !=, !==
7논리 곱 연산자&&
8논리 합 연산자ㅣㅣ
9대입 연산자=, +=, -=, *=, /=, %=
10쉼표,
profile
소통하는 개발자가 꿈입니다!

0개의 댓글