자바스크립트에서 값은 항상 문자열이나 숫자형 같은 특정한 자료형에 속한다.
자료형은 총 8가지가 있다.
숫자형
정수 및 소수..
여러 연산이 가능하고, 일반적인 숫자 외에 Infinity, -Infinity, NaN 등 특수 숫자 값이 포함된다.
- Infinity는 무한대를 말한다.
(어떤 숫자든 0으로 나누면 무한대.)
- NaN은 부정확하거나 정의되지 않은 수학연산을 사용할때 반환되는것이다(문자열을 숫자로 나누는 등)
- NaN에 어떤 추가연산이 들어가던지 그 값은 NaN이다.
BigInt(IE를 제외한 곳에서만 지원)
자바스크립트 내부표현 방식에 의해
(2의 53제곱 - 1)(9007199254740991)
보다 큰 값
또는 -(2의 53제곱 - 1)
보다 작은 정수는 숫자형으로는 나타낼 수 없다.
일반적인 상황에서 사용되지는 않고, 암호관련 작업등 큰 숫자가 필요한 상황에서 아주 높은 정밀도로 작업을 해야 할 때에는 이런 큰 숫자가 필요하다.
- BigInt 형은 정수형 끝에 123423423423423423n
이렇게 n을 붙이면 만들 수 있다.
문자형
문자형은 따옴표로 묶어 표기.
- 큰 따옴표와 작은 따옴표는 기본적인 따옴표로 자바스크립드에서는 둘의 차이는 없다.
- 역따옴표(벡틱이라고도함)로 변수나 표현식을 감싸고 달러 중괄호 ${}
안에 넣어주면 원하는 변수나 표현식을 문자열 중간에 넣을 수 있음.
Boolean형
논리 타입으로 true, flase 이렇게 두가지 밖에 없는 자료형.
null값
어느 자료형에도 속하지 않으며 null은 오로지 null만 포함하는 별도의 자료형을 만듬.
- 자바스크립트의 null은 다른언어에서의 null과는 다르다.
다른 언어에서는 null을 존재하지 않는 객체에 대한 참조, 또는 null pointer을 나타낼때 사용하지만
지바스크립트에서는 존재하지 않는 값, 비어있는 값, 알 수 없는 값을 나타낼때 사용한다.
undefined값
null처럼 쟈신만의 자료형을 갖는다.
값이 할당되지 않음을 나타낸다.
변수는 선언했으나 값이 할당되지 않았다면 undefined가 자동으로 할당된다.
객체형과 심볼형(Object and Symbol)
- 특수한 자료형
객체형을 제외하고는 문자열이나 숫자나 한가지만 표현이 가능하기에 원시 자료형이라고 한다.
그러나 객체는 데이터 컬렉션 등 복잡한 개체를 표현할 수 있다.
- 심볼형은 객체의 고유한 식별자를 만들때 사용된다.
typeof 연산자
- 이 연산자를 사용할 경우 해당 자료형을 알 수 있다.
연산자의 경우 typeof x
함수의 경우 typeof(x)
typeof x 를 호출하면 인수의 자료형을 문자열로 알려준다.
typeof undefined => // "undefined" typeof 10n => // "bigint" typeof Symbol("id") => // "symbol" typeof Math => // "object" typeof null => // "object" typeof alert => // "function"
Math는 수학 연산을 제공하는 내장객체이기에 object타입이다.
null의 결과도 object이다. 별도의 고유 자료형을 가져 객체(object)가 아니지만 하위 호환성 유지를 위해 이 오류를 수정하지 않았다. 단지 언어 자체의 오류이지 객체는 아니다.
함수형 이라는 것은 따로 존재하지 않고 객체형에 속한다.