[TIL/모던 자바스크립트 Deep Dive] 2023/03/14
6장. 데이터 타입(Data Type) 데이터 타입(data type)은 말 그대로 값의 종류를 말한다. JS의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 과 으로 분류할 수 있다. 6-1. 숫자
6장. 데이터 타입(Data Type)
데이터 타입(data type)은 말 그대로 값의 종류를 말한다. JS의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 ``원시 타입(primitive type)`과 `객체 타입(object/reference type)``으로 분류할 수 있다.


6-1. 숫자 타입(Number Type)
C 또는 Java의 경우, ``정수와 실수를 구분`하여 int, long, float, double 등, 다양한 숫자 타입을 제공한다고 한다. 자바스크립트는 `하나의 숫자 타입만`` 존재한다.
ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다.
바로 위의 문장이 오늘의 최대 위기였다.
컴퓨터에서 ``실수`(소수점 이하가 있는 숫자)를 표현하는 방식에는 `고정소수점 방식`과 `부동소수점 방식``이 있다. 소수점을 고정한 상태로 실수를 표현하면 '고정소수점 방식', 소수점을 유동적으로 옮길 수 있는 상태(=부동,floating)로 실수를 표현하면 '부동소수점 방식'이다.
이러한 ``부동소수점 방식`은 `배정밀도(Double Precision)`와 `단정밀도(Single Precision)``로 구분된다.
#### ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다.
어쨌든 JS에서는 모든 수를 실수로 처리하며, 정수만을 표현하기 위한 데이터 타입은 별도로 존재하지 않는다는 것이 결론이다. 숫자 타입 part 초입에, 자바스크립트는 '하나의 숫자 타입(실수)'만 존재한다고 언급한 것이 바로 위 결론에 해당된다.
정수, 실수, 2진수, 8진수 등의 리터럴은 모두 메모리에 배정밀도 64비트 부동소수점 형식의 ``2진수`로 `저장``된다.
한편 JS는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기에 이들 값을 참조하면 모두 ``10진수`로 `해석``된다.
추가적인 숫자 타입 개념

6-2. 문자열 타입(String Type)
문자열(string) 타입은 ``text data``를 나타내는 데 사용한다.
문자열은 ``작은따옴표(''), 큰따옴표(""), 또는 백틱()``으로 텍스트를 감싼다.

문자열만 따옴표로 감싸는 이유는 ``키워드 또는 식별자와 같은 토큰과 구분``하기 위해서다. 문자열을 따옴표로 감싸지 않으면 JS 엔진은 문자열이 아니라 키워드나 식별자와 같은 토큰으로 인식한다.

'hello'를 따옴표로 감싸지 않으니까, Reference Error가 등장했다. 정말 식별자로 인식한다는 점을 확인할 수 있다.
primitive type과 obj/ref type의 판단 기준

그러나 JavaScript의 문자열은 ``원시 타입``이며, 이는 곧 immutable value임을 의미한다. '문자열과 불변성'에 관한 내용은 뒤에서 다룬다고 한다.
More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계