728x90 javascript38 [JS][강제변환] 명시적 강제변환 : 숫자 형태의 문자열 파싱 명시적 강제변환 : 숫자 형태의 문자열 파싱 문자열에 포함된 숫자를 파싱하는 것은 '문자열 -> 숫자' 강제변환과 결과는 비슷하지만, 앞서 배운 타입변환과는 분명한 차이가 있다. var a = "42"; var b = "42px"; Number(a); // 42 parseInt(a); // 42 Number(b); // NaN parseInt(b); // 42 문자열로부터 숫자 값의 파싱은 비 숫자형 문자를 허용한다. 즉, 좌 -> 우 방향으로 파싱하다가 숫자 같지 않은 문자를 만나면 즉시 종료된다. 반면, 강제변환은 비 숫자형 문자를 허용하지 않기 때문에 NaN를 내고 두 손을 들어버린다. 파싱은 강제변환의 대안이 될 수 없다. 비슷해 보여도 목적 자체가 다르다. 우측에 비 숫자형 문자가 있을지 확실하.. 2022. 2. 10. [JS][강제변환] 명시적 강제변환 : 날짜 <-> 숫자 명시적 강제변환 날짜 숫자 +단항 연산자는 'Date 객체 -> 숫자' 강제변환 용도로도 쓰인다. 결과값이 날짜/시각 값을 유닉스 타임스탬프 표현형이기 때문이다. var d = new Date("Thu, 19 Feb 2022 08:53:06 CDT"); +d; // 1645278786000 다음과 같이 현재 시각을 타임스탬프로 바꿀 때 관용적으로 사용하는 방법이다. var timestamp = +new Date(); 생성자 호출시 전달 인자가 없다면 괄호는 생략 가능한, 기이한 자바스크립트 구문 '트릭'이 있다는 걸 알고있는 사람도 많을 것이다. 그래서 앞의 코드는 var timestamp = +new Date;처럼 서도된다. 하지만 괄호를 생략하면 가독성이 좋아진다는 말을 인정하지 않는 사람들도 있으며.. 2022. 2. 10. [JS][강제변환] 명시적 강제변환 : 문자열 <-> 숫자 명시적 강제변환 명시적 강제변환은 분명하고 확실한 타입변환이다. 개발자들이 흔히 사용하는 타입변환은 대개 이 명시적 강제변환 범주에 속한다. 명시적 강제변환은 정적 타입 언어에서 지극히 당연하다고 여겨지는 타입변환의 관례를 충실히 따르고 있기에 별다른 논쟁거리는 없다. 따라서 명시적 강제변환이 나쁜 것도 아니고, 이슈가 많은 주제도 아니라고 당연하게 받아들이자. 명시적 강제변환: 문자열 숫자 우선, 가장 간단하면서도 가장 잦은 강제변환이라 할 수 잇는 것이 '문자열 숫자' 강제 변환이다. '문자열 숫자' 강제변환은 String()과 Number() 함수를 이용하는데, 앞에 new 키워드가 붙지 않기 때문에 객체 래퍼를 생성하는 것이 아니란 점을 눈여겨보자. 다음은 두 타입 간 명시적 강제변환 예제다. v.. 2022. 2. 9. [JS][강제변환] 추상 연산 ToBoolean 강제변환 ToBoolean 자바스크립트에서 불리언에 대해 간단히 살펴보자. 아직도 많은 혼동과 오해를 불러일으키는 주제이다. 우선 자바스크립트에는 true와 false라는 키워드가 존재하며 우리가 예상하는 그대로 잘 작동한다. 흔히들 1과 0이 각각 true, false에 해당한다고 생각하는데 다른 언어에서는 몰라도 자바스크립트에서는 숫자는 숫자고, 불리언은 불리언으로 서로 별개다. 1을 true로 0을 false로 강제변환 할수는 있지만 그렇다고 두 값이 똑같은건 아니다. Falsy 값 지금부터가 재미있다. true/false가 아닌 값을 불리언에 상당한 값으로 강제변환 했을 때. 이 값들은 어떻게 작동할까? 자바스크립트의 모든 값은 다음 둘 둥 하나다. 불리언으로 강제변환하면 false가 되는 값 1.. 2022. 2. 9. [JS][강제변환] 추상 연산 ToBoolean 강제변환 ToBoolean 자바스크립트에서 불리언에 대해 간단히 살펴보자. 아직도 많은 혼동과 오해를 불러일으키는 주제이다. 우선 자바스크립트에는 true와 false라는 키워드가 존재하며 우리가 예상하는 그대로 잘 작동한다. 흔히들 1과 0이 각각 true, false에 해당한다고 생각하는데 다른 언어에서는 몰라도 자바스크립트에서는 숫자는 숫자고, 불리언은 불리언으로 서로 별개다. 1을 true로 0을 false로 강제변환 할수는 있지만 그렇다고 두 값이 똑같은건 아니다. Falsy 값 지금부터가 재미있다. true/false가 아닌 값을 불리언에 상당한 값으로 강제변환 했을 때. 이 값들은 어떻게 작동할까? 자바스크립트의 모든 값은 다음 둘 둥 하나다. 불리언으로 강제변환하면 false가 되는 값 1.. 2022. 2. 9. [JS][강제변환] 추상연산 ToNumber 추상연산 ToNumber '숫자 아닌 값 -> 수식 연산이 가능한 숫자' 변환 로직은 ES5 9.3 ToNumber 추상 연산에 잘 정의되어있다. 예를 들어 true는 1, false는 0이 된다. undefined는 NaN으로, null은 0으로 바뀐다. 문자열 값에 ToNumber를 적용하면 대부분 숫자 리터럴 규칙/구문과 비슷하게 작동한다. 변환이 실패하면 결과는 NaN이다. 한 가지 차이는 0이 앞에 붙는 0진수는 ToNumber에서 올바른 숫자 리터럴이라도 8진수로 처리하지 않는다는 점이다. 문자열 값에 대한 숫자 리터럴 문법과 ToNumber는 아주 세밀하고 미묘한 뉘앙스의 차이가 있어 더 이상 언급하지 않는다. 객체(그리고 배열)는 일단 동등한 원시 값으로 변환 후 그 결괏값(아직 숫자가 아.. 2022. 2. 9. 이전 1 2 3 4 5 6 7 다음 728x90