기본자료형=원시형(Primitive) Object 를 제외한 모든 값은 변경 불가능한 값(Immutable)이다.
객체형(Object)
논리 요소를 나타내며 true
와 false
두 가지의 값을 갖는다.
javascript 에서는 어떤 코드 부분이 실행되어야 할 지 결정하는데에 사용된다.
if (condition) {
console.log("true");
} else {
console.log("false");
}
null 하나의 값만 가질 수 있다.
존재하지 않거나 유효하지 않은 object 또는 주소를 의도적으로 가리키는 참조이다.
javascript 에서 Null 은 원시값 처럼 동작하고 원시값으로 보이지만 type 을 출력해보면 object 를 반환한다.
console.log(typeof null); // object
값을 할당하지 않은 변수는 자동으로 undefined 값을 가진다.
let x;
console.log(x); // undefined
-(2^53 − 1)부터 2^53 − 1까지의 수이다.
부동소수점 숫자 외에도 +Infinity, -Infinity, NaN("Not a Number") 세 개의 상징적인 값을 가진다.
Number 타입중 유일하게 두가지 방식으로 표현할 수 있는 수가 있다.
console.log(0 === -0) // true
console.log(42 / +0) // Infinity
console.log(42 / -0) //-Infinity
임의 정밀도로 정수를 나타낼 수 있는 원시값이다.
Number의 안전 한계를 넘어서는 큰 정수도 안전하게 저장하고 연산할 수 있다.
정수 끝에 n을 추가하거나 생성자를 호출해 생성할 수 있다.
const bigint = 1234567890123456789012345678901234567890n;
const sameBigint = BigInt("1234567890123456789012345678901234567890");
const bigintFromNumber = BigInt(10);
일반 숫자와 섞어서 써야 하는 상황이라면
let bigint = 1234567890123456789012345678901234567890n;
let number = 3;
// 숫자를 bigint로
console.log(bigint + BigInt(number)); // 1234567890123456789012345678901234567893n
// bigint를 숫자로
console.log(Number(bigint) + number); // 1.2345678901234568e+39
console.log(Number(bigint)); // 1.2345678901234568e+39
텍스트 데이터를 나타낼 때 사용하며 "요소"로 구성된 집합이다.
첫 번째 요소는 인덱스 0에, 그 다음 요소는 인덱스 1, 그 다음은 2, ... 이다.
객체의 속성 키로 사용할 수 있다.
ES6 버전의 JavaScript에서 새롭게 추가되었다.
일반적으로 심볼 타입은 객체의 프로퍼티 키를 고유하게 설정함으로써 프로퍼티 키의 충돌을 방지하기 위해 사용된다.
심볼은 Symbol 함수를 호출함으로써 생성할 수 있다. 이때 생성되는 심볼은 변경이 불가능한 원시 값이다.
const obj = {};
const sym1 = Symbol();
const sym2 = Symbol('foo');
const sym3 = Symbol('foo');
obj[sym1] = 'propertyValue1';
obj[sym2] = 'propertyValue2';
obj[sym3] = 'propertyValue3'; // no conflict with sym2
console.log(obj); // {Symbol(): 'propertyValue1', Symbol(foo): 'propertyValue2', Symbol(foo): 'propertyValue3'}
console.log(obj[sym1]); // propertyValue1
console.log(obj[sym2]); // propertyValue2
console.log(obj[sym3]); // propertyValue3
식별자로 참조할 수 있는 메모리 상의 값이다.
속성을 추가하거나 제거할 수도 있다.
속성 값으로는 다른 객체를 포함해 모든 타입을 사용할 수 있으므로 복잡한 자료구조의 구축이 가능하다.
속성은 '키' 값으로 식별하며, 키 값으로는 문자열 값이나 심볼을 사용할 수 있다.
javascript의 데이터 타입은 크게 원시형과 객체형으로 나눌 수 있으며 원시형은 number, string, undefined 과 같은 Immutable 값이다.