자바스크립트에서 객체의 타입을 확인하는 방법을 소개합니다. 자바스크립트는 타입 체크에 엄격한 언어가 아니기 때문에, 변수의 타입이 변경될 수도 있습니다. 그렇기 때문에 객체의 타입이 무엇인지 확인하고 어떤 동작을 처리할 때가 있는데요. 이럴 때 typeof를 사용합니다.
1. typeof로 객체 타입 확인 (Syntax)
typeof는 typeof object 또는 typeof(object)처럼 호출할 수 있으며, 객체의 타입을 확인하고 문자열로 타입을 리턴합니다. 둘 다 사용 가능하지만 typeof()처럼 함수형태로 사용하는 것이 좋을 수 있습니다. typeof object 형태는 typeof 123-456처럼 입력했을 때 typeof 123으로 해석되어 의도와 다르게 동작할 가능성이 있다고 합니다.
let val = 10;
console.log(typeof(val)); // number
val = '10';
console.log(typeof val); // string2. 타입 체크 예제 (1)
자바스크립트는 아래와 같은 타입들이 있으며, 타입의 오른쪽에 있는 문자열이 typeof가 출력하는 문자열입니다.
- String - 'string'
- Number - 'number'
- BigInt - 'bigint'
- Symbol - 'symbol'
- Boolean - 'boolean'
- undefined - 'undefined'
- Function object - 'function'
- null - 'object'
- object - 'object'
아래는 typeof로 객체들의 타입을 출력하는 예제입니다. 예제들을 보면 약간 혼란스럽지만 new Boolean()은 object 타입이지만, true 또는 false는 boolean 타입이 됩니다. new String()과 ''도 이와 비슷합니다. 생성자 함수로 생성된 객체는 대부분 object 타입입니다.
console.log(typeof(10)); // number
console.log(typeof('10')); // string
console.log(typeof(new String(10))); // string
console.log(typeof(Infinity)); // number
console.log(typeof(NaN)); // number
console.log(typeof([])); // object
console.log(typeof(Array(5))); // object
console.log(typeof(true)); // boolean
console.log(typeof(false)); // boolean
console.log(typeof(new Boolean(true))); // object
console.log(typeof(() => 10)); // function
console.log(typeof(Symbol())); // symbol
console.log(typeof(null)); // object
console.log(typeof(val)); // undefined
console.log(typeof(undefined)); // undefined3. 타입 체크 예제 (2)
아래와 같이 조건문을 사용하여 객체가 어떤 타입일 때, 어떤 동작을 처리하도록 구현할 수 있습니다.
let num = 10;
if (typeof(num) === 'number') {
console.log("Type is number");
}Output:
Type is number4. 정의 안된 변수의 타입
정의 안된 변수의 type을 확인해보면 undefined가 출력됩니다.
console.log(typeof(val)); // undefined5. null의 타입 확인
null을 typeof로 확인해보면 object가 리턴됩니다.
console.log(typeof(null)); // object6. NaN, Infinity의 타입 확인
NaN, Infinity의 경우 typeof는 모두 number를 리턴합니다.
console.log(typeof(NaN)); // number
console.log(typeof(Infinity)); // numberRelated Posts
- ESLint warning, Expected '===' and instead saw '==' eqeqeq
- Javascript - 현재 날짜/시간을 항상 한국 기준으로 가져오기
- Javascript - 문자열 사이에 문자 넣기
- Javascript - 버튼 활성화/비활성화 시키는 방법
- Javascript - 버튼 이름 변경하기
- Javascript - div 안의 내용 가져오기, 변경, 추가, 삭제
- Javascript - <ol>, <ul>에 <li> 동적 추가, 삭제
- Javascript - div 생성, 추가, 삭제 방법
- Javascript - 테이블 행(tr) 숨기기, 보이기
- Javascript - div에 링크 거는 방법
- Javascript - 자식 요소(element) 개수 확인
- Javascript - 요소(element) 복사, 붙여넣기
- Javascript - div에 클릭 이벤트(onclick) 설정 방법
- Javascript - 체크박스 선택/해제 시, 텍스트박스 활성화/비활성화
- Javascript - input 숫자만 입력받도록 설정
- Javascript - 자식 노드 모두 제거
- Javascript - 체크박스 선택, 해제 방법
- Javascript - input text 값 가져오기
- JavaScript - 문자열을 배열(Array)로 변환
- JavaScript - 특정 문자열의 포함 여부 확인 (includes, 정규표현식)
- JavaScript - 문자열 비교 방법, 5가지
- JavaScript - 문자열 바꾸기(replace, 정규식 치환)
- JavaScript - 배열 전체 출력 (for, forEach, for in, for of)
- JavaScript - 한번만 실행되는 함수 (once: true)
- JavaScript - 선택된 checkbox 값 가져오기
- JavaScript - div, 태그 안의 내용 가져오기
- JavaScript - element(버튼, div) 보이기 숨기기
- JavaScript - 숫자를 배열로 변경하는 방법
- JavaScript - 부모, 형제, 자식 element 찾기
- JavaScript - 클래스 이름으로 element 찾는 방법
- JavaScript Array find() 함수
- JavaScript Array splice() 함수
- JavaScript의 contains() 함수
- JavaScript sort() 함수, 예제 소개
- JavaScript - Set 생성 및 초기화