신입 개발자에서 시니어 개발자가 되기까지

[Javascript Deep Dive]9장 타입변환과 단축평가 본문

책읽기/Javascript Deep Dive

[Javascript Deep Dive]9장 타입변환과 단축평가

Jin.K 2022. 10. 3. 00:27

Javascript Deep Dive를 다 읽고 미리 필기해둔 것들을 코드스테이츠 내용과 합쳐서 올리다보니 해당 게시판은 텅텅 비어있다. 중복되는 내용을 올리기는 싫어서 골라서 올리려고 하다보니 계속 미루기만 했다.

1. 암묵적 타입의 변환

a. 문자열타입으로 변환

    - Number + string = string
    - 표현식의 피연산자가 아닌, 표현식의 평가 결과가 문자열 타입으로 변환 되는 경우도 있음.(템플릿 리터럴을 삽입했을 때)

b. 숫자타입으로 변환

        i. 산술연산자
        - -, *, / 의 경우.
        ii. 비교연산자
        - '1' > 0 의 경우 '1'을 숫자타입으로 변환.
        iii. +단항연산자            

    주의 : 빈 객체는 NaN, 빈 배열은 0이다. Undefined는 nan이다. 배열안에 숫자가 있어도 nan이다.

c. 불리언 타입으로 변환

    - false, undefined, null, 0, -0, NaN, ''(빈 문자열)은 false로 평가된다.
    - 주의 : '0'은 true를 반환한다. 빈 문자열이 아니니까.

2. 명시적 타입 변환

a. 문자열타입으로 변환

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

b. 숫자타입으로 변환

  • Number 생성자 함수를 new 연산자 없이 호출
  • parseInt, parseFloat 함수
  • '+' 단항 연산자
  • '*' 산술 연산자

c. 불리언 타입으로 변환

  • Boolean 생성자 함수를 new 연산자 없이 호출
  • ! 부정 논리 연산자를 두 번 사용
  • 주의 : !!'false'는 true다. 빈 문자열이 아니니까. Infinity도 true임. 빈객체, 빈배열도 true다.

3. 단축평가

a. 논리연산자를 이용한 단축평가

    - 단축평가를 이용하여 에러를 방지할 수 있는 경우 : 객체의 프로퍼티에 접근할 때
    ex) 변수 object = null 일 때, object.value를 참조하면 에러가 나지만, object && object.value로 참조하면 에러가 나지 않음

b. 옵셔널 체이닝 연산자(?.와 &&의 차이)

    - 논리연산자 &&의 경우 빈문자열 ''의 length를 반환하지 못한다.
    - ?.의 경우에는 반환할 수 있음. 옵셔널 체이닝은 좌항 피연산자가 false로 평가되는 Falsy 값이라도 null 또는 undefined가 아니면 우항의 프로퍼티 참조를 이어간다.                

c. Null 병합 연산자

    - 마찬가지로 || 와 ??의 기능에도 차이가 있다. 목적은 어쩄든 변수가 null 또는 undefined일 경우에 반환해줄 default값을 설정해주는 것이다.
    - 기본값으로 0이나 ''를 설정하려는 경우에는 ??연산자를 사용하여야한다.