4.강제변환_3

악음·2021년 8월 6일
0

i will know javascript

목록 보기
10/12
post-thumbnail

Truthy 값

truthy값의 의미는 정확히 무엇일까? 다시 이야기하지만 falsy 값 목록에 없으면 무조건 truthy값이다.

다음을 살펴보자

let a = 'false'
let b = '0'
let c = "'  '"
let d = []
let e = {}
let f = function(){}
let g =Boolean(a&&b&&c&&d&&e&&f) //true

위에값모두 falsy목록에는 없는 값들이다.
사실 truthy의 값은 목록으로 만들수없을 정도로 다양하니
falsy값이 무엇인지를 알고 boolean을 다뤄야한다.

4.3 명시적 강제변환

명시적 강제변환은 분명하고 확실한 타입변환이다 개발자들이 흔히 사용하는 타입 변환은 대개 이 명시적 강제변환 범주에 속한다.

  • 이절에서 타입변환 과정을 분명하고 명확하게 할 수 있는 패턴을 스스로 터득해보자

4.3.1 명시적 강제변환 :문자열 <->숫자

우선 간단 명료한 문자열<->숫자 강제변환을 알아보자

  • 숫자=>문자는 String(숫자)를 사용한다
    -간단히 숫자.toStirng()으로 사용한다 (이방법은 객체를 String 객채로 래핑한뒤 toString()을 사용할수있도록한다 -명시적으로 암시적인 작동이다)
  • 문자=>숫자는 Number(문자)를 사용한다.
    -간단히 +문자 를하면 숫자로 바꿔준다.(굳이 쓰지말자)

이와같은 방법으로 코드를 보기 어렵게 만드는 코드들이 있지만
그냥 넘어가도록한다.

남이 짠 코드를 볼경우에 모르는게나오면 검색하고 끔찍한 코드군!이라고 생각한뒤 머리속에서 지워버리자

날짜 ->숫자

  • 단항 연산자는 Date 객체를 숫자로 강제 변환 용도로 쓰인다.
    유닉스 타임스탬프 표현형으로 전환해준다
    (유닉스 타임스탬프 = 1 january 1970 00:00:00 utc 이후로 흐른 시간을 밀리 초 단위로 표시)
let d =+new Date("Mon, 18 Aug 2014 08:53:06 CDT") //1408369986000

이런 방법보단

let timestamp = Date.now() //1628250737825

방법을 쓰자

틸드(~)

넘어가자

4.3.2 명시적 강제변환 : 숫자 형태의 문자열 파싱

parseInt("42px")의 값은?

  • 정답은 42
    그렇다면
parseInt("px42")

의값은?

NaN이다

그이유는 parseInt는 좌에서 우로 이동하며 숫자가아닌 값을 만나면 그즉시 멈춘다. 때문에 42다음 "p"를만나서 멈춰버린다.
(쌍둥이로 parseFloat()이있다)

parseInt는 문자열에 쓰는 함수임을 기억하자

예전 parseInt는 2번쨰 인자로 몇진수인지 넘겨주어야했다.
그이유는 x나 X면 16진수로 0이면 8진수로 문자열을 임의로 해석했다.
ES5 이후부턴 0x으로 시작할때만 16진수로 그외엔 모두 10진수로 처리한다.

profile
RN/react.js개발자이며 배운것들을 제가 보기위해서 정리하기 때문에 비속어 오타가 있을수있습니다.

0개의 댓글