- 자바스크립트는 동적타입의 언어(dynamically typed)
//no error
let value = "hello world";
value = 12.456;
1. 숫자형
- 숫자형(number type) 정수 및 부동소수점 숫자를 나타냄
- Infinity, -Infinity, NaN같은 '특수 숫자 값(special numeric value)'이 포함
let number = 123; //정수
number = 12.345; //부동소수점
number = 1 / 0; // Infinity
number = Infinity; //직접 참조
number = "string" / 2; //NaN
2. BigInt
- (2^53-1)(9007199254740991) 보다 큰 값 혹은 -(2^53-1) 보다 작은 정수는 '숫자형’을 사용해 나타낼 수 없음
- 표준으로 채택된 지 얼마 안 된 자료형으로, 길이에 상관없이 정수를 나타낼 수 있음
- 정수 리터럴 끝에 n을 붙이면 만들 수 있음
const bigInt = 1234567890123456789012345678901234567890n;
3. 문자형
- 큰따옴표: "Hello World"
- 작은따옴표: 'Hello World'
- 역 따옴표: `Hello World`
- 역 따옴표로 변수나 표현식을 감싼 후 ${…}안에 넣어주면 변수나 표현식을 문자열 중간에 손쉽게 넣을 수 있음
let str = "Hello World";
let str2 = 'Hello World';
let number = 123;
let str3 = `Hello World ${number}` //변수를 문자열 중간에 삽입
let str4 = `Hello World ${1+2}` //표현식을 문자열 중간에 삽입
4. Boolean
- 논리 타입으로 true, false 두 가지 값만 있음
let isCheck = true;
console.log(isCheck) //true
isCheck = false;
console.log(isCheck) //false
5. null
- 어느 자료형에도 속하지 않는 값
- null 값은 오로지 null 값만 포함
- 다른 언어에서의 null과 성격이 다름
- 다른 언어에서의 null은 '존재하지 않는 객체에 대한 참조'나 'null pointer'를 나타낼 때 사용
- 자바스크립트에서의 null은 '존재하지 않는(nothing) 값', '비어 있는(empty) 값', '알 수 없는(unknown) 값'을 나타내는데 사용함
let name = null;
6. undefined
- '값이 할당되지 않은 상태’를 나타낼 때 사용
let name;
alert(name); // 'undefined' 출력
let name = 'sanggeun choi';
name = undefined; //권장하지 않음, 비어있을 경우 null 값을 사용
alert(name); // 'undefined' 출력
7. 객체(object), 심볼(symbol)
- 객체(object)는 특수한 자료형
- 객체형을 제외한 다른 자료형은 문자열, 숫자 등 한가지만 표현할 수 있기 때문에 원시(primitive) 자료형이라 부름
- 객체(object)는 데이터 컬렉션이나 복잡한 개체(entity) 표현이 가능함
- 심볼(symbol)형은 객체의 고유한 식별자(unique identifier)를 만들 떄 사용
8. typeof
- 인수의 자료형을 나타내는 문자열을 반환
- 연산자 : typeof x
- 함수 : typeof(x)
- 연산자, 함수 결과는 동일함
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
(1) Math는 수학 연산을 제공하는 내장 객체
(2) 고유한 자료형을 가지는 특수 값으로 객체가 아니지만, 하위 호환성을 유지하기 위해 오류를 수정하지 않고 남겨둔 상황. 언어 자체의 오류로 null은 객체가 아님
(3) 함수형은 따로 없음, 함수는 객체형에 속함. 오래전에 만들어진 규칙이었기 때문에 하위 호환성 유지를 위해 남겨진 상태, 한편 실무에서는 유용하게 사용됨
출처 : https://ko.javascript.info/types
자료형
ko.javascript.info