모던 자바스크립트 Deep Dive - 7. 연산자

둡둡·2023년 12월 31일

7. 연산자

  • 연산자(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 논리, 비교 등을 수행해 하나의 값을 만듦
  • 연산 대상을 피연산자라고 함

7.1. 산술 연산자

  • 산술 연산자는 피연산자를 수학적으로 계산하여 새로운 숫자 값을 만듦

7.1.1. 이항 산술 연산자

  • 2개의 피연산자 산술 연산, 항상 새로운 값 생성
  • +, -, *, /, %

7.1.2. 단항 산술 연산자

  • 1개의 피연산자 산술 연산, 피연산자의 값을 변경함(암묵적 할당)
  • ++, --, +, -
    • 전위 증가/감소 연산자, 후위 증가/감소 연산자

7.1.3. 문자열 연결 연산자

  • + 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작함
    • 암묵적 타입 변환 = 타입 강제 변환

7.2. 할당 연산자

  • 할당 연산자는 우항에 있는 피연산자의 평가 결과를 좌항 변수에 할당
  • 할당문은 값으로 평가되는 표현식인 문으로서, 할당된 값으로 평가됨
    • ex) console.log(x=10); // 10

7.3. 비교 연산자

  • 비교 연산자는 좌항과 우항의 피연산자를 비교한 다음, 결과를 불리언 값으로 반환
  • 주로 if 문이나 for문과 같은 제어문의 조건식에서 사용

7.3.1. 동등/일치 비교 연산자

  • 동등/부동등 비교 (==, !=): 값이 같거나 다름 비교
  • 일치/불일치 비교 (===, !==): 값과 타입이 같거나 다름 비교
    • 사용 권장
    • NaN 예외, Number.isNaN 내장 함수 사용
    • Object.is(a,b): ES6 도입된 내장 함수, 동일한 기능

7.3.2. 대소 관계 비교 연산자

  • <, >, =<, =>

7.4. 삼항 조건 연산자

  • 삼항 조건 연산자는 조건식의 평가 결과에 따라 반환 값 결정
    • 조건식 ? true 일 때 반환할 값 : false 일 때 반환할 값
    • 조건식의 평가 결과는 불리언으로 암묵적 타입 변환
  • 삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현식인 문
    • 조건에 따라 어떤 값을 결정해야 한다면 삼항 조건 연산자 표현식
    • 조건에 따라 수행해야 할 문이 여러 개라면 if문 권장

7.5. 논리 연산자

  • 우항과 좌항의 피연산자를 논리 연산
    • ||(or), &&(and), !(not)
  • 항상 불리언 값 리턴, 피연산자는 암묵적 타입 변환됨

7.6. 쉼표 연산자

  • 쉼표 연산자는 왼쪽 피연산자부터 차례대로 평가하여 마지막 피연산자의 평가 결과를 반환함

7.7. 그룹 연산자

  • 그룹 연산자는 소괄호('()')로 감싼 피연산자들로, 가장 먼저 평가함

7.8. typeof 연산자

  • 피연산자의 데이터 타입을 문자열로 반환함
    • string, number, boolean, undefined, symbol, object, function
    • null은 반환하지 않음, 일치 연산자(===) 사용 권장

7.9. 지수 연산자

  • 좌항의 피연산자를 밑(base)으로 우항의 피연산자를 지수(exponent)로 거듭 제곱함
    • ex) 2**2 // 4
  • ES7에서 도입, 이전에는 Math.pow 사용함
  • 이항 연산자 중에서 우선 순위가 가장 높음

7.10. 그 외의 연산자

  • 옵셔널 체이닝 (?.)
  • null 병합 연산자 (??)
  • 프로퍼티 삭제 (delete)
  • 인스턴스 생성 (new) 등

7.11. 연산자의 부수 효과

  • 일부 연산자는 다른 코드에 영향을 주는 부수 효과가 있음
    • 할당 연산자(=), 증가/감소 연산자(++/--), delete 연산자 등

7.12. 연산자 우선 순위

    1. () 그룹 연산자
    • 그룹 연산자를 사용하여 명시적으로 우선 순위를 조절할 것을 권장
    1. new(매개변수 존재), [] (프로퍼티 접근), ()(함수 호출), ?. (옵셔널 체이닝)
    1. new(매개변수 미존재)
    1. x++, x-- (후위)
    1. !x, ++x, --x, typeof, delete
    1. ** (이항 연산자 중 가장 높음)
    1. *, /, %
    1. +, -

7.13. 연산자 결합 순서

  • 좌항 -> 우항: +,-,/,%,<,<=,>,>=,&&,|| 등
  • 우항 -> 좌항: ++,--,할당 연산자,! 등

[출처] 모던 자바스크립트, Deep Dive

profile
괴발개발라이프

0개의 댓글