1.느슨한 타입(loosely typed)의 동적(dynamic) 언어
> _**JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어입니다. JavaScript의 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능합니다._**
JavaScript 의 언어는 원시값과 객체로 나뉜다.
이런 일련의 타입을 "원시 값"이라고 합니다.
[ 원시값 ]
"객체를 제외한 모든 타입은 불변 값(변경할 수 없는 값)을 정의합니다.
____ 예를 들어 (C 언어와는 달리) 문자열은 불변합니다."
string type
텍스트 데이터를 나타낼 때 사용하는 string type 은 C 언어와 다르게 문자열이 불변하다. 이는 한번 선언한 문자열은 다른 문자를 추가, 삭제 해도 이미 선언한 문자가 직접 변경되는 것이 아니라 새 문자열이 생성되는 것이다.
예)'eoo' 라는 문자열을 생성하면 값을 저장하기 위해 일부 메모리가 할당된다. 이 메모리는 변경되지 않는다. 여기에 'vv' 라는 문자열을 추가하여 'eoo'를 수정한다면 이제 'eoo' 와 'vv' 두개의 메모리가 사용된다. 'eoo' 또는 'vv'를 사용하지 않더라고 유지된다. 문자열 연산이 비용이 많이드는 이유라고 한다.
number type
내장 숫자 타입. -(2의53승-1_ 부터 2의53승의-1 까지 정밀표현 가능하다. (이 수를 벗어난다고 계산이 안되는 것은 아니나 정밀도가 줄어든다고 한다.) 외에도 +Infinity -Infinity NaN(Not a Number)로 표현할 수 있다.
biglnt type
내장 숫자 타입. number type의 안전한계를 넘어서는 큰 정수도 안전하게 저장하고 연산할 수 있다.
정수 끝에 n 을 추가하거나 생겅자를 호출하여 생성 가능하다.
boolean type
논리 요소인 true, false 값을 갖는다.
symbol type
Symbol은 고유하고 변경 불가능한 원시 값이며 객체의 속성(아래를 참고하세요) 키로 사용할 수 있습니다. 어떤 프로그래밍 언어들에선 "아톰"이라고 부르기도 한다.
undefined type
값이 할당되지 않은 변수. 변수 선언 후 초기화 또는 값을 넣지 않은 상태의 변수값을 표현한다.
null type
null type은 null 값 하나만 존재한다.
