728x90
- 자바스크립트의 모든 값은 데이터 값을 가짐
- 데이터 타입
- 원시 타입 : number, string, boolean, undefined, null, symbol(ES6에서 추가)
- 객체 타입 : 객체, 함수, 배열 등
- 데이터 타입의 필요성
- 메모리 공간의 확보, 참조 : 데이터 타입에 따라 메모리 공간의 크기가 결정
- 값의 해석 : 메모리에서 읽어온 2진수를 어떻게 해석할 것인지 결정
- 원시 타입 --> 변경 불가능한 값(Immutable value)
- 객체 타입 --> 변경 가능한 값(Mutable value)
number 타입
- 자바스크립트는 하나의 숫자 타입만 존재함
- 배정밀도 64bit 부동소수점 형식
- 모든 수는 실수로 처리
- 2진수, 8진수, 16진수 등의 리터럴은 모두 10진수로 해석됨
- 정수로 표시되는 수끼리 나누면 실수가 나올 수도 있음
- 특별한 값 : Infinity(양의 무한대), -Infinity(음의 무한대), NaN(산술 연산 불가)
string 타입
- 0개 이상 UTF-16의 집합으로 문자를 표현
- '', "", ``로 표현 --> 키워드, 식별자와 같은 토큰을 구별하기 위함
- ''로 표현하는 게 일반적임
- 변경 불가능한 값 --> Immutable value
- 따라서 인덱스로 문자를 참조해서 변경해도 값이 변하지 않음
템플릿 리터럴
- ES6부터 도입한 새로운 문자열 표기법
- 런타임에 일반 문자열로 변환되어 처리됨
- `` 사용
- 멀티라인 문자열 허용
- 표현식 삽입 허용 : ${value} 형태 --> 표현식의 결과가 문자열로 변환되어 삽입됨
boolean 타입
- true, false
undefined 타입
- 자바스크립트 엔진이 변수를 초기화할 때 사용
- 개발자가 변수에 할당하는 것은 권장되지 않음 --> 개발자는 null을 할당
null 타입
- 변수에 값이 없다는 것을 의도적으로 드러냄 -> 의도적 부재
- 함수가 유효 값을 반환할 수 없을 때 null을 반환함
symbol 타입
- 다른 값과 중복되지 않은 유일한 값
- 이름이 충돌할 일이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용함
- Symbol 함수를 호출해서 생성함
- 값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않음
객체 타입
- 자바스크립트를 이루는 것은 거의 다 객체임
동적 타이핑
-
자바스크립트에서는 값 할당 시점에 변수의 타입이 결정됨
-
할당에 의한 타입 결정 --> 타입 추론
-
변수의 타입은 재할당을 통해서 언제든 동적으로 변할 수 있음
-
단점(신뢰성의 문제)
- 변화하는 변수 값 추적이 어려움
- 값을 확인하기 전에 타입을 확신할 수 없음
-
따라서 변수는
- 꼭 필요한 경우에만 사용
- 스코프는 최대한 좁게
- 전역 변수는 사용을 억제
- 변수보다는 상수를 사용
- 변수 이름은 목적이나 의미를 파악할 수 있도록 지음
학습 도서
- '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스
'Language | Basic > JavaScript' 카테고리의 다른 글
[JavaScript 스터디] 데이터의 타입 변환, 단축 평가 (0) | 2021.01.22 |
---|---|
[JavaScript 스터디] 제어문 (0) | 2021.01.22 |
[JavaScript 스터디] 연산자 (0) | 2021.01.22 |
[JavaScript 스터디] 표현식과 문 (0) | 2021.01.22 |
[JavaScript 스터디] 변수 (0) | 2021.01.22 |