자바스크립트에는 7개의 타입이 존재
구분 | 데이터 타입 | 설명 |
---|---|---|
원시 타입 (변경 불가) | 숫자 타입 | 하나의 타입만 존재 |
문자열 타입 | ||
불리언 타입 | T/F | |
undefined 타입 | ||
null 타입 | 값 없음 의도적 명시 | |
심벌 타입 | ||
객체 타입 | 객체, 함수 배열 |
6.1 숫자 타입
- 하나의 숫자 타입만 존재
- 배정밀도 64비트 부동소수점 형식 2진수로 저장 (정수로 표시된다고 해도 실수로 저장될 수 있음)
- Infinity, -Infinity, NaN(not-a-number)
6.2 문자열 타입
- ‘’ / “” / `` (작은 따옴표 일반적)
- 문자열 내의 “ / ‘ 구분 위해. 동시 존재 X
- 개행 허용 X → \n 써야함
템플릿 리터럴
- 런타임에 일반 문자열로 변환되어 처리
- ` ` (백틱)
- 개행 허용, 공백 그대로 적용
- 표현식 삽입 : ${} → 문자열 타입으로 강제 변환 (↔ 문자열 : + 기호)
6. 4 불리언 타입 (True / False)
6. 5 undefined 타입
- undefined 반환 → 할당 x ⇒ 초기화되지 않은 변수
6.6 null 타입
- 의도적으로 값 없음 명시하고 싶을 때 (intentional absense)
- 전에 참조하던 값 더 이상 참조 x
6.7 심벌 타입
- 다른 값과 중복되지 않는 유일무이한 값.
- 주로 이름 충돌 위험 없는 객체의 유일한 프로퍼티 키를 만듦
- Symbol 함수를 호출해 생성
-
심벌 값은 외부에 노출 X , 다른 값과 중복 X
6.8 객체 타입 : 자바스크립트를 이루고 있는 거의 모든 것이 객체. 자바스크립트는 객체 기반의 언어 (6가지 타입 외에는 모두 객체)
6.9 데이터 타입의 필요성
- 저장할 때 확보할 메모리 공간 크기 결정
- 참조할 때 한 번에 읽어들여야 할 메모리 공간 크기 결정
- 읽어들인 2진수 어떻게 해석 결정
6.10 동적 타이핑 (dynamic typing)
- 자바스크립트의 변수는 할당에 의해 타입 결정 (타입 추론type inference)
- 재할당에 의해 언제든지 동적으로 변화 가능
- 위험
- 복잡한 프로그램 변화하는 변수 값 추적 어려움
- 변수 값 확인 전 타입 확신 X
- 엔진에 의한 암묵적 타입 자동 변환 (개발자의 의지와 상관 없이)
- 해결법
- 변수는 꼭 필요한 경우에 한해 제한적 사용
- 스코프는 최대한 좁게 → 부작용 억제
- 전역 변수 최대한 X
- 상수 사용 권장
- 변수 이름은 목적, 의미 파악 가능하게
##
“가독성이 좋은 코드가 최고의 코드다.”
이 포스트는 모던 자바스크립트 Deep Dive를 공부하며 정리한 내용입니다.