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을 다뤄야한다.
명시적 강제변환은 분명하고 확실한 타입변환이다 개발자들이 흔히 사용하는 타입 변환은 대개 이 명시적 강제변환 범주에 속한다.
우선 간단 명료한 문자열<->숫자 강제변환을 알아보자
이와같은 방법으로 코드를 보기 어렵게 만드는 코드들이 있지만
그냥 넘어가도록한다.
남이 짠 코드를 볼경우에 모르는게나오면 검색하고 끔찍한 코드군!이라고 생각한뒤 머리속에서 지워버리자
- 단항 연산자는 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
방법을 쓰자
넘어가자
parseInt("42px")의 값은?
parseInt("px42")
의값은?
NaN이다
그이유는 parseInt는 좌에서 우로 이동하며 숫자가아닌 값을 만나면 그즉시 멈춘다. 때문에 42다음 "p"를만나서 멈춰버린다.
(쌍둥이로 parseFloat()이있다)
parseInt는 문자열에 쓰는 함수임을 기억하자
예전 parseInt는 2번쨰 인자로 몇진수인지 넘겨주어야했다.
그이유는 x나 X면 16진수로 0이면 8진수로 문자열을 임의로 해석했다.
ES5 이후부턴 0x으로 시작할때만 16진수로 그외엔 모두 10진수로 처리한다.