0. 데이터 타입
자바스크립트의 모든 값은 데이터 타입을 가짐.
자바스크립트는 7개의 데이터 타입을 제공하고, 원시타입과 객체타입으로 분류됨.
- 원시타입 : 변하지 않는 값을 의미.
메모리에 고정된 크기로 저장되며, 변수에 원시 타입의 데이터를 저장하면 그 값 자체가 저장됨.
ex) Number, String, Boolean, Null, Undefined, Symbol
- 객체타입 : 복잡한 데이터 구조를 나타낼 때 사용되며, 여러 개의 다양한 값을 하나의 단위로 묶어 표현할 수 있음.
객체 타입의 데이터는 변경 가능함. 변수에 객체 타입의 데이터를 저장하면, 그 데이터가 저장된 메모리 주소가 저장됨.
ex) 객체, 배열, 함수 ..
자바스크립트는 객체 기반의 언어, 이루고 있는 거의 모든 것이 객체
1. 숫자 타입
하나의 숫자타입만 존재. 배정밀도 64비트 부동소수점 형식
모든 수를 실수로 처리함(정수만 표현하기 위한 타입 없음) -> 값을 참조하면 모두 10진수로 해석
BigInt : 매우 큰 정수 나타냄
Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN : 산술 연산 불가 Not a number
2. 문자열 타입
0개이상의 16비트 유니코드 문자의 집합, 텍스트 데이터를 나타내는데 사용.
작은 따옴표, 큰 따옴표, 백틱으로 텍스트를 감쌈
-> 이유 : 1) 키워드나 식별자같은 토큰과 구분하기 위함. 2) 스페이스 같은 공백문자 포함 시키기 위해.
3. 템플릿 리터럴
ES6부터 도입, 런타임에 일반 문자열로 변환되어 처리.
백틱을 사용해 표현.
일반 문자열내에 줄바꿈 표현 -> 이스케이프 시퀀스 사용 해야함
하지만, 템플릿 리터럴 내에서는 이스케이프 시퀀스 사용 하지 않아도 있는 그대로 적용.
템플릿 리터럴 내에서는 표현식 삽입 통해 간단히 문자열 삽입 가능.
표현식 삽입하려면 ${ }으로 감싸야함. 이때, 평과 결과가 문자열이 아니라도 문자열로 타입 강제 변환됨.
4. undefined
변수선언에 의해 확보된 메모리 공간은 빈공간으로 내버려두지 않고, 자바스크립트 엔진이 undefined로 초기화 힘.
따라서, 값을 할당하지 않은 변수 참조하면 undefined가 반환됨.
-> 개발자가 의도적으로 할당 x, 초기화 되지 않은 변수
5. null
변수에 값이 없다고 개발자가 의도적으로 명시.
변수에 null 할당하는 뜻 : 변수가 이전에 참조하던 값을 더이상 참조하지 않는다는 의미.
이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거.
6. 심벌 타입
ES6에서 추가된 타입, 변경 불가능한 원시타입의 값
다른 값과 중복되지 않는 유일무이한 값
이름이 충돌할 위험 없는 객체의 유일한 프로퍼티 키 만들기 위해 사용, 생성된 심벌값은 외부에 노출되지 않고 유일무이한 값
Symbol함수 호출해 생성(이외의 원시값들은 리터럴을 통해 생성)
7. 데이터 타입의 필요성
1) 값을 저장할 때 확보해야 하는 메모리 공간 크기 결정
2) 값을 참조할 때 한번에 읽어들여야할 메모리 공간 크기 결정
3) 메모리에서 읽어들인 2진수 어떻게 해석할지 결정
8. 동적 타이핑
- 정적 타입 언어 : 변수 선언할 때 변수에 할당 할 수 있는 값의 종류 사전에 선언(명시적 타입 선언)
변수의 타입 변경 불가, 타입에 맞는 값만 할당
컴파일 시점에 타입체크
- 동적 타입 언어 : 변수 선언할 때 타입 선언 x
어떤 데이터 타입의 값도 올 수 있음
자바스크립트는 동적타입언어 -> 변수가 선언이 아닌 할당에 의해 타입 결정(타입 추론), 재할당에 의해 언제든지 타입이 동적으로 변할 수 있음(동적타이핑)
'스터디 > 모던 자바스크립트 Deep Dive(24.02-24.06)' 카테고리의 다른 글
8장. 제어문 (1) | 2024.03.14 |
---|---|
7장. 연산자 (0) | 2024.03.14 |
5장. 표현식과 문 (0) | 2024.03.04 |
4장. 변수 (0) | 2024.03.04 |
3장. 자바스크립트 개발 환경과 실행방법 (0) | 2024.03.04 |