Language | Basic/JavaScript

[JavaScript 스터디] 데이터의 타입 변환, 단축 평가

주정용 2021. 1. 22. 15:57
728x90

타입 변환

  • 값의 타입이 변경되는 것
  • 명시적 타입 변환 == 타입 캐스팅 --> 개발자가 의도적으로 변환
  • 암묵적 타입 변환 == 타입 강제 변환 --> 자바스크립트 엔진이 알아서 변환
  • 타입 변환은 기존 원시 값을 변경하지 못함 --> 원시 타입은 Immutable value이기 때문
  • 기존 원시 값을 사용하여 다른 타입의 새로운 원시 값을 생성하는 것
  • 암묵적 타입 변환은 새로운 타입의 값을 단 한 번만 사용하고 버림 --> Garbage Collection 대상

암묵적 타입 변환

  • 자바스크립트 엔진이 알아서 값의 타입을 변환함

문자열 타입으로 변환

  • 템플릿 리터럴의 표현식(${}) 삽입 기능은 식의 평가 결과를 string 타입으로 암묵적으로 변환함

숫자 타입으로 변환

  • 자바스크립트 엔진은 산술 연산자의 피연산자 중에서 숫자가 아닌 값을 숫자로 변환하여 연산 결과 값을 반환함
  • 숫자 타입으로 변환할 수 없는 값이 있으면 그 연산은 NaN
  • 비교 연산자는 Boolean 값을 반환 --> 비교대상이 숫자 타입이어야 함 --> 숫자로 타입 변환이 일어남
  • + 단항 연산자는 피연산자를 숫자 타입으로 변환함
    • '', [], null, false --> 0
    • true --> 1
    • {객체}, [비어있지 않은 배열], undefined는 숫자로 변환 불가능 --> NaN

불리언 타입

  • 자바스크립트 엔진은 boolean이 아닌 값을 Truthy, Falsy로 구분함
  • Truthy -> true, falsy --> false로 암묵적 타입 변환이 일어남
  • Falsy
    • false, undefined, null, 0, -0, NaN, ''
  • 나머지는 모두 Truthy

명시적 타입 변환

  • 개발자가 의도적으로 값의 타입을 변환함
  • 방법 : 표준 빌트인 생성자 함수를 new없이 호출, 빌트인 메서드 사용, 암묵적 타입 변환 이용

문자열 타입으로 변환

  • String 생성자 함수를 new 없이 호출
  • Object.prototype.toString() 이용
  • 문자열 연결 연산자(+) 사용

숫자 타입으로 변환

  • number 생성자 함수를 new 없이 호출
  • parseInt(string), parseFloat(string) 함수를 사용
  • + 단항 산술 연산자 사용
  • * 산술 연산자 사용

불리언 타입으로 변환

  • Boolean 생성자 함수를 new 없이 호출
  • ! 부정 논리 연산자를 두 번 사용

단축 평가

  • && 논리곱 연산자 : 2개의 피연산자가 모두 true일 때, 2번째 피연산자를 그대로 반환함
    • true && 어떤 값 --> 어떤 값
    • false && 어떤 값 --> false
  • || 논리합 연산자 : 2개의 피연산자 중 1개라도 true일 때, true를 반환함
    • true || 어떤 값 --> true
    • false || 어떤 값 --> 어떤 값
  • 단축평가는 기본값을 설정할 때, null이나 undefined일 수도 있는 프로퍼티를 참조할 때 유용함

옵셔널 체이닝 연산자

  • ?. : ES11에서 도입됨
  • 좌항의 피연산자가 null이나 undefined인 경우 undefined를 반환, 아니면 우항의 프로퍼티 참조를 진행함
  • 좌항 값이 Falsy라도 null, undefined만 아니면 우항을 참조함

null 병합 연산자

  • ?? : ES11에서 도입됨
  • 좌항의 피연산자가 null, undefined라면 우항의 피연산자를 반환하고, 아니라면 좌항의 피연산자를 반환함
  • 변수에 기본값을 설정할 때 좋음. ex) let name = null ?? '정용'; --> name == 정용

학습 도서

  • '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&linkClass=3314&barcode=9791158392239