Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 정적웹사이트
- css
- Adobe
- JavaScript
- animation
- TaskRunner
- Study
- Eclipse Bug
- VW
- Eclipse
- Sass
- next.js
- html
- 보일러플레이트
- SSR
- tomcat
- java
- 1분코딩
- 이클립스
- gulp
- React
- ref
- 자바스크립트
- ref전달하기
- npm
- Eclipse Compare View
- frontend
- CSS3
- error
- 이클립스 소스 비교 안보일 때
Archives
- Today
- Total
프론트 개발 블로그
자바스크립트에서 타입을 체크하는 방법 typeof 본문
typeof
typeof 연산자는 피연산자의 평가 전 자료형을 나타내는 문자열을 반환한다.
console.log(typeof 42);
// output: 'number'
console.log(typeof 'text');
// output: 'string'
console.log(typeof true);
// output: 'boolean
console.log(typeof undeclaredVariable);
// output: 'undefined'
console.log(typeof {a:1});
// output: 'object'
console.log(typeof [1,2,3]);
// output: 'obejct'
console.log(typeof function() {});
// output: 'function'
왜 null 이 null 이 아니고 object 일까?
console.log(typeof null);
// output: 'object'
typeof null === 'object';
// true
typeof null === 'null'
// false
자바스크립트를 처음 구현할 때 자바스크립트 값은 타입 태그와 값으로 표시 되었다고 함.
객체 타입 태그는 0이었고, null 은 Null pointer(대부분 플랫폼에서 0x00)로 표시되었다고 함.
그 결과 null은 타입 태그로 0을 가지며 따라서 typeof 가 object 를 반환한다고 한다.
이것은 자바스크립트 초기 버전의 버그이며,
typeof null === 'null' 로 수정이 제안되었지만 기존의 코드가 손상될 수 있기 때문에 거절당했다고 함.
https://2ality.com/2013/10/typeof-null.html
https://web.archive.org/web/20160331031419/http://wiki.ecmascript.org:80/doku.php?id=harmony:typeof_null
null 타입 체크 방법
일치 연산자는 값과 타입이 동일할 때만 true 를 반환하기 때문에 일치 연산자(===)를 사용하는 것이 좋다고 한다.
var nullcheck = null;
console.log(nullcheck === null); // true
검색하다가 잘 정리된 글이 있어서 첨부
https://curryyou.tistory.com/183
typeof 는 object 와 array 를 구분해주지 못한다.
console.log(typeof {a:1});
// output: 'object'
console.log(typeof [1,2,3]);
// output: 'obejct'
obejct 와 array 를 구분하는 방법 1. Array.isArray()
Array.isArray() 메서드는 인자가 Array 인지 판별한다.
Array.isArray([1,2,3]); // true
Array.isArray({a:1}); // false
obejct 와 array 를 구분하는 방법 2. constructor 속성으로 확인
constructor 속성은 색성자 객체를 통해 생겨난 인스턴스를 알려주는 역할을 함.
const obj = {a:1};
obj.constructor === Object // true
obj.constructor === Array // false
const arr = [1,2,3];
arr.constructor === Object // false
arr.constructor === Array // true
반응형
'Javascript' 카테고리의 다른 글
scroll 이벤트가 실행되지 않을 때 (0) | 2021.10.26 |
---|---|
IIFE, 재귀 함수, 중첩 함수, 콜백 함수, 고차 함수, 순수, 비 순수 함수 정리 (0) | 2021.09.29 |
void 0; 이 뭐지? (3) | 2021.01.18 |
비동기처리 (0) | 2020.03.02 |
scope / hoisting (0) | 2020.02.24 |