typeof instance === "number" // true
typeof instance === "string" // true
typeof instance === "boolean" // true
typeof instance === "object" // true
typeof instance === "undefined" // true
typeof instance === "symbol" // true
typeof instance === "bigint" // true
숫자형(Number type)은 정수, 부동소수점 숫자(Floating point Number)를 나타낸다.
특수한 숫자 값도 있다. NaN
, Infinity
(양의 무한대), -Infinity
(음의 무한대)이다.
👉 NaN, isNaN() vs Number.isNaN() 자세히 알아보기
(예정)
문자열은 다음과 같은 기호를 사용하면 만들 수 있다.
"hello"
'hello'
💡 일부 언어는 글자 하나를 저장하는 자료형을 지원하기도 한다. C언어와 Java의
char
가 대표적인 예이다.자바스크립트는 글자형을 지원하지 않는다. 문자열만 있을 뿐이다.
``(backtick)과 템플릿 리터럴(${})의 사용
(예정)
(예정)
null
만을 위한 별도의 자료형. 자바스크립트에서 null
은 '존재하지 않는(nothing)' 값, '비어 있는(empty)' 값, '알 수 없는(unknown)' 값을 나타내는 데 사용한다.
💡 자바스크립트의 null은 자바스크립트 이외 언어의 null과 성격이 다르다. 다른 언어에선 null을 '존재하지 않는 객체에 대한 참조’나 '널 포인터(null pointer)'를 나타낼 때 사용한다.
undefined
만을 위한 별도의 자료형. undefined
는 '값이 할당되지 않은 상태'를 나타낼 때 사용한다.
// let의 경우 변수는 선언되었지만 값이 할당되지 않은 경우, 해당 변수에 자동으로 undefined가 할당된다.
let age;
console.log(age); // undefined
(예정)
typeof
연산자는 인수의 자료형(type)을 반환한다. 자료형에 따라 처리 방식을 다르게 하고 싶거나, 변수의 자료형을 빠르게 알아내고자 할 때 유용하다. typeof
를 호출하면 인수의 자료형을 나타내는 문자열을 반환한다.
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 null; // "object" (1)
typeof Math; // "object" (2)
typeof alert; // "function" (3)
(1) typeof null
의 결과는 "object"
이다. null
은 별도의 자료형을 가지는 특수값으로 객체가 아니다. 그러나 하위 호환성을 유지하기 위해 이런 오류가 수정되지 않고 남겨져 있게 되었다. 이는 언어 상의 오류이고, null
이 객체가 아님에 유의하자.
(2) Math
는 수학 연산을 제공하는 내장 객체이므로 "object"
가 출력된다. 이처럼 내장 객체의 type은 객체(object)이다.
(3) typeof
는 피연산자가 함수이면 "function"
을 반환한다. 그러므로 typeof alert
는 "function"
를 출력한다. 그런데 함수 자료형은 따로 존재하지 않는다. 함수도 객체(object) 자료형에 속한다. 이것도 하위 호환성을 위해 남겨진 규칙이다. 실무에선 이런 특징이 유용하게 사용되기도 한다.