Skip to content

Latest commit

 

History

History
33 lines (29 loc) · 2.28 KB

File metadata and controls

33 lines (29 loc) · 2.28 KB

연산자, operator

  • 하나 이상의 expression (값으로 평가될 수 있는 statement) 을 대상으로 산술, 할당, 비교, 논리 등의 연산(operation) 을 수행해 하나의 값을 만드는 역할을 담당
  • 이때 연산의 대상을 피연산자 (operand) 라고 한다.
    • operand는 값으로 평가될 수 있어야한다.

주의 해야할 연산자 동작

연산자는 여러가지 종류가 있고 C,JAVA와 대부분 유사하다. 다만 몇가지 주의해야할 동작이 있다.

  • 암묵적 타입 변환 (Implicit Coercion)
    • 산술 연산자 (+, -, *, /):
      • + 연산자는 피연산자 중 하나가 문자열이면 문자열 결합으로 동작
        • 예를 들어, "1" + 2는 숫자 2가 문자열 "2"로 변환되어 "12"가 됩니다.
      • -, *,** / 등은 피연산자를 숫자로 변환
        • 예를 들어, "5" - 2는 숫자 5로 변환되어 3이 됩니다.
    • 단항 연산자 (+, -):
      • 단항 +는 피연산자를 숫자로 변환합니다. 예를 들어
        • +"3"은 숫자 3이 됩니다.
  • 동등 비교 연산자 (== vs ===)
    • ==는 비교 시 암묵적 타입 변환을 수행한다.
      • 예를 들어, 0 == "0"true로 평가된다.
    • ===엄격한 비교로 타입 변환 없이 값과 타입이 모두 일치해야 한다.
  • Falsy & Truthy 값
    • 자바스크립트는 조건문에서 암묵적으로 타입 변환을 진행한다.
    • false, 0, "", null, undefined, NaNfalsy한 값으로 평가되며, 이 외의 값은 truthy하게 평가됩니다.
  • 객체와 원시 값의 변환
    • 객체를 문자열이나 숫자로 변환할 때 toString() 혹은 valueOf() 메서드가 호출됩니다.
    • 이 과정에서 커스텀 객체는 의도와 다르게 동작할 수 있으므로, 명시적 변환이나 메서드 오버라이딩에 주의해야 합니다.
  • 특이 케이스
    • 빈 배열([])과 객체의 결합: 예를 들어, [] + {}"[object Object]"로 평가되고, {} + []는 의도와 다르게 0으로 평가될 수 있습니다.
    • nullundefined의 비교: null == undefinedtrue이지만, null === undefinedfalse입니다.