Javascript는 7개의 데이터타입을 제공한다.
원시 타입(primitive type) - 숫자(Number), 문자열(String), 불리언(Boolean), undefined, null, Symbol
객체 타입(object/reference type) - 객체(객체,함수,배열 등)
1. 숫자 타입
- JS에는 하나의 숫자타입만 존재한다.(모든 수를 실수로 처리)
- 메모리에 배정밀도 64비트 부동소수점 형식의 2진수로 저장된다.
- JS에는 2진수, 8진수, 16진수등을 표현하기 위한 데이터 타입을 제공하지 않기 때문에
이들 값을 참조하면 모두 10진수로 해석된다.
- 추가적으로 특별한 값도 표현할 수 있다. ( Infinity, -Infinity, NaN)
* BigInt 찾아보기
2. 문자열 타입
- 텍스트 데이터 나타내는데 사용. 16비트 유니코드 문자의 집합
- 작은따옴표(''), 큰따옴표(""), 백틱(``)으로 감싼다.
-JS의 문자열은 원시타입이고 변경 불가능한 값(immutable value)이다. (11.1.2절 참조)
- 일반 문자열 내에서는 줄바꿈등의 공백을 표현하려면 이스케이프 시퀀스 사용
- 탬플릿 리터럴(``) 에서는 줄바꿈등의 공백 허용(멀티라인 문자열), ${}로 표현식 삽입 가능(삽입된 표현식이 문자열로 변환)
3. 불리언 타입
- True / False
- 조건문에서 자주 사용된다.
4. undefined 타입
- undefined타입의 값은 undefined가 유일하다.
- 변수,함수 등에 값을 할당하거나 반환하지 않으면 undefined가 된다.
5. null 타입
- null타입의 값은 null이 유일하다.
- 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. (undefined와 구분)
- 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.
- 주의) type of null은 object로 나온다.
6. symbol 타입
- ES6에서 추가된 변경 불가능한 원시 타입의 값이다.
- 다른 값과 중복되지 않는 유일무이한 값.
- 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
- symbol 이외의 원시값은 리터럴을 통해 생성되지만 symbol은 함수를 호출해 생성한다.
- 33장에서 자세히 살펴볼 예정
7. 객체 타입
- 11장에서 자세히 다룰 예정
8. 데이터 타입의 필요성
- JS엔진은 데이터타입에 따라 정해진 크기의 메모리 공간을 확보한다.
- 값을 참조할 때 데이터타입에 따라 정해진 단위만큼의 메모리 공간에 저장된 값을 한번에 읽어들인다.
- 데이터 타입에 따라 메모리에서 읽어들인 2진수를 다르게 해석한다.
- 정재남님 강의 10분~ 17분에 메모리 작동방식 더 알아보기
9. 동적 타이핑
- JS는 동적타입언어로 변수를 선언할 때가 아니라 할당할 때 타입이 결정(타입추론 type inference)된다.
- 재할당에 의해 변수의 타입은 언제든지 변경될 수 있다.
- 단점으로는 변수의 값을 확인하기 전까지 타입을 확신할 수 없고, 개발자의 의도와 다른 타입으로 변경될 수
있기 때문에 유연성은 높지만 신뢰성은 떨어진다.
- 변수사용시 주의사항
⓵ 변수의 사용 최소화 ⓶ 변수의 유효범위(스코프)는 최대한좁게 ⓷전역변수는 최대한 사용하지 않는다.
⓸ 변수보다는 상수(const)사용으로 값의 변경 억제 ⓹ 변수이름 잘 짓기
Reference
- 이웅모 , 모던 자바스크립트 Deep Dive , 위키북스 , 2020
'개인공부 > 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
10장 객체 리터럴 (0) | 2022.12.23 |
---|---|
9. 타입변환과 단축평가 (0) | 2022.12.21 |
8. 제어문 (0) | 2022.12.21 |
7. 연산자 (0) | 2022.12.20 |
4. 변수 / 5. 표현식과 문 (1) | 2022.12.17 |
댓글