모던 자바스크립트 6장, 데이터 타입을 공부하며, 더 세부적으로 조사한것과 중요한 내용을 정리해 보았다. 기본적인 내용은 배제하였다.
1) undefined: 값이 할당되지 않은 변수 혹은 속성을 참조할 때 undefined
2) null: '없음'을 나타내기 위해 사용(의도적 부재를 나타낼 때 사용)
-> 개발자 입장에서 명시적으로 부재를 나타내고 싶을 때 사용한다. undefined와의 구분을 해줄 필요가 있다.
(변수에 null 을 할당 -> 참조를 명시적으로 제거하는 것 -> JS엔진에 의해 해당 변수의 메모리 공간에 가비지 콜렉션을 수행)
Symbol 타입: ES6 에서 추가된 타입으로, 변경 불가능한 원시 타입의 값이다. 심벌 타입은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용된다.
const key = Symbol('SYMBOL_DESCRIPTION'); // Symbol 함수에는 생성된 Symbol에 대한 설명을 넣을 수 있음(디버깅 용도)
key.description; //'SYMBOL_DESCRIPTION'
key.toString(); // "Symbol('SYMBOL_DESCRIPTION')"
!key // true
key + 'test' // Uncaught Error
const obj = {};
const symKey = Symbol('description');
obj.symKey = '12345';
<참고.https://hbsowo58.tistory.com/460>
1) 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
2) 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
3) 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
동적타입언어: 변수 선언이 아닌 할당에 의해서 타입이 결정(타입 추론), 재할당에 의해서 타입이 바뀔 수 있음(JavaScript, Python, Ruby, PHP...)
: 변수는 타입이 없다. 변수의 타입은 값에 의해 결정된다
정적타입언어: 변수를 선언할 때, 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 사전에 선언(C, C++, Kotlin, Go, ...)
: 정적 타입 언어는 컴파일 시점에 타입을 체크한다