모던 자바스크립트 Deep Dive - 9. 타입 변환과 단축 평가

둡둡·2024년 1월 1일

Modern Javascript Deep Dive

목록 보기
10/49

9.1. 타입 변환이란?

  • 명시적 타입 변환 / 타입 캐스팅: 개발자가 의도적으로 값의 타입을 변환함
    • Number, toString() 등
  • 암묵적 타입 변환 / 타입 강제 변환: 자바스크립트 엔진에 의해 자동 변환됨
  • 타입 변환이란 기존 원시 값을 이용해 새로운 원시 값을 생성함

9.2. 암묵적 타입 변환

9.2.1. 문자열 타입으로 변환

  • '+' 연산자는 피연산자 중 하나 이상이 문자열인 경우 암묵적 타입 변환

9.2.2. 숫자 타입으로 변환

  • 산술 연산자에서 모든 피연산자는 숫자 타입이어야 함
    • 숫자 타입이 아닌 경우 암묵적 타입 변환
    • 변환할 수 없는 경우 NaN
  • 비교 연산자에서도 문맥상 필요한 경우 암묵적 타입 변환

9.2.3. 불리언 타입으로 변환

  • if 문, for 문과 같은 제어문 등의 조건식에서 불리언 타입으로 암묵적 타입 변환
  • Falsy
    • false, undefined, null, 0, -0, NaN, ''(빈 문자열)
    • ! 부정 연산자를 붙이면 모두 true
  • Falsy 외에 모든 값은 Truthy

9.3. 명시적 타입 변환

  • 표준 빌트인 생성자 함수: String, Number, Boolean

9.3.1. 문자열 타입으로 변환

  • String 생성자 함수 호출
  • Object.prototype.toString() 메서드 사용
  • 문자열 연결 연산자 사용

9.3.2. 숫자 타입으로 변환

  • Number 생성자 함수 호출
  • parseInt, parseFloat 함수 사용 (문자열만 가능)
    • 단항 연산자 사용
    • 산술 연산자 사용

9.3.3. 불리언 타입으로 변환

  • Boolean 생성자 함수 호출
  • ! 부정 논리 연산자 두 번 사용
    • ex) !!'' -> false, !!1 -> true

9.4. 단축 평가

9.4.1. 논리 연산자를 사용한 단축 평가

  • 논리곱(&&) 연산자는 논리 연산의 결과를 결정하는 두 번째 피연산자를 반환함
    • ex) 'cat' && 'dog' // 'dog'
    • Truthy 일 때 동작이 필요한 경우 if 문 대체 가능
  • 논리합(||) 연산자도 동일, 평가 결과를 결정하는 피연산자를 반환함
    • Falsy 일 때 대체 가능
  • 변수가 null 또는 undefined 일 때 확인 후 참조할 때 사용 가능
var example = null;
var value1 = example.value; // TypeError
var value2 = example && example.value // null
  • 함수 매개변수에 기본 값을 설정할 때 사용 가능

9.4.2. 옵셔널 체이닝 연산자

  • 옵셔널 체이닝 연산자(?.): 좌항의 피연산자가 null 또는 undefined 일 때 undefined 반환, 아닌 경우 계속 실행

9.4.3. null 병합 연산자

  • null 병합 연산자(??): 좌항의 피연산자가 null 또는 undefined 일 때 우항의 피연산자 반환, 아닌 경우 좌항의 피연산자 반환

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

profile
괴발개발라이프

0개의 댓글