5,6장. 표현식과 데이터 타입
원시 타입
- number : 숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재
- String : 문자열
- boolean : 논리적 참(true)과 거짓(false)
- undefined : var 키워드로 선언된 변수에 암묵적으로 할당되는 값
- null : 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
- symbol : ES6에서 추가된 7번째 타입
객체 타입
- 객체, 함수 배열 등
number 타입
- 64비트 부동소수점 형식을 따르며, 숫자타입은 모두 실수로 표현된다.
- 값을 참조하면 몇진수든간에 10진수로 해석된다.
- NaN : Not a Number
console.log(10 === 10.0); // true
String 타입
- 문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.
- 변경 불가능한 값이다.
템플릿 리터럴
백틱(` `)을 사용하며 ${변수}를 이용하여 문자열 내에서 변수값을 직접 표현할 수 있다.
undefined
var로 변수를 선언했을때 암묵적으로 undefined로 초기화된다.
즉, 자바스크립트 엔진이 변수를 초기화할 때 쓰는 값이다.
(변수에 undefined가 들어있다면 초기화되지 않은 변수라는 뜻으로 볼 수 있다.)
변수에 값이 없다는것을 명시하고 싶은거라면 null을 할당하는것이 취지에 맞다!
Symbol 타입
ES6에서 추가된 7번쨰 타입으로, 변경 불가능한 원시 타입의 값이다.
다른값과 중복되지 않는 유일무이한 값으로, 주로 객체의 유일한 프로퍼티 키를 만들 때 사용한다.
// 심벌 값 생성
var key = Symbol('key');
console.log(type of key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]);
데이터 타입의 필요성
변수에 할당되는 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다!
100을 저장한다고 쳤을 때,
자바스크립트 엔진은 리터럴 100을 숫자타입의 값으로 해석하고 저장하기 위해 8바이트의 메모리 공간을 확보한다. 그리고 100을 2진수로 저장한다.
데이터 타입이 필요한 이유
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
동적 타이핑
자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다.(=타입 추론)
그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.