JavaScript_Study [ Type coercion (타입변환) ]

이준석·2023년 4월 4일
0

JavaScript_Study

목록 보기
5/35
post-thumbnail

2021-09-06 노션 페이지
기록된 노션을 다시 정리

어려웠던 부분

  • 단축평가
    • or
      • 앞 부분만 true일 경우 앞부분 반환
      • 뒷 부분만 true일 경우 뒷부분 반환
      • 모두 true일 경우 앞부분 반환
        - 앞부분이 true일 경우 바로 반환하기 때문
    • and
      • 둘중 하나만 true일 경우 false부분 반환
      • 모두 true일 경우 뒷부분 반환
        - 무조건 두가지 모두 확인해야하기 때문에

타입변환

  • 개발자가 의도로 타입을 변환시키는 것을 명시적 타입변환, 타입 캐스팅이라 한다.
  • 개발자의 의도와 상관없이 타입이 변환되는 것을 암묵적 타입변환, 강제 타입변환이라 한다.
  • 명시적 타입 변환도 마찬가지지만, 암묵적 타입 변환이 기존 값(위 예제의 경우, 변수 x의 값)을 직접 변경하는 것은 아니다.

암묵적 타입변환

아래 값들은 제어문의 조건식과 같이 불리언 값으로 평가되어야 할 컨텍스트에서 false로 평가되는 Falsy 값이다

  • false
  • undefined
  • null
  • 0, -0
  • NaN
  • ’’ (빈문자열)
function isTruthy(v) {
  // 불리언 타입으로 변환하여 연산함
  return !!v;
}
console.log(isTruthy(true));  //true
console.log(isTruthy('0'));   //true
console.log(isTruthy({}));    //true
console.log(isTruthy([]));    //true

명시적 타입변환

  • 문자열 타입으로 변환
    • console.log(String(1));
    • console.log((1).toString());
  • 숫자열 타입으로 변환
    • console.log(number('1'));
      : 해당 방법은 Number이란 것을 한 번에 알 수 있어 선호함
    • console.log(+'0');
    • console.log(parseInt('0'));
    • console.log('0' * 1);
  • 불리언 타입으로 변환
    • console.log(Boolean('x'));

단축평가

function getStringLength(str) {
 str = str || ''; 
 return str.length
}
getStringLength();     // 0
getStringLength('hi'); // 2

함수를 호출할 때 인수를 전달하지 않으면 매개변수는 undefined를 갖는다.
단축평가를 통해 undefined는 boolean타입으로 변환 시 false를 반환한다.
그렇기에 str은 단축평가를 통해 빈문자열을 반환한다.

  • 위에 패턴은 매개변수 default 값을 사용으로 대체될 수 있을 것 같다.

참조: poiemaweb.com

0개의 댓글