>웹 프론트엔드 >프런트엔드 Q&A >JavaScript의 typeof는 어떤 데이터 유형을 반환할 수 있나요?

JavaScript의 typeof는 어떤 데이터 유형을 반환할 수 있나요?

青灯夜游
青灯夜游원래의
2021-12-08 16:58:3512963검색

JavaScript에서 typeof 연산자가 반환할 수 있는 데이터 유형은 "정의되지 않음", "객체", "부울", "숫자", "문자열", "기호", "함수" 등입니다.

JavaScript의 typeof는 어떤 데이터 유형을 반환할 수 있나요?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

변수의 데이터 유형을 반환하려면 typeof 연산자를 사용하세요.

각 데이터 유형에 해당하는 typeof의 값을 살펴보겠습니다.

Data type Result
Undefine "undefine"
Null "객체"
부울 "boolean"
숫자 값 "number"
string "string"
기호(ECMAScript 6의 새로운 기능) "기호"
호스트 객체(브라우저 등 JS 환경에서 제공) 구현에 따라 다름
Function 객체 "function"
any other object "object"

보세요 구체적인 예:

// Numbers
typeof 37 === 'number';
typeof 3.14 === 'number';
typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // 尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"
typeof Number(1) === 'number'; // 不要这样使用!

// Strings
typeof "" === 'string';
typeof "bla" === 'string';
typeof (typeof 1) === 'string'; // typeof返回的肯定是一个字符串
typeof String("abc") === 'string'; // 不要这样使用!

// Booleans
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(true) === 'boolean'; // 不要这样使用!

// Symbols
typeof Symbol() === 'symbol';
typeof Symbol('foo') === 'symbol';
typeof Symbol.iterator === 'symbol';

// Undefined
typeof undefined === 'undefined';
typeof blabla === 'undefined'; // 一个未定义的变量,或者一个定义了却未赋初值的变量

// Objects
typeof {a:1} === 'object';

// 使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型
typeof [1, 2, 4] === 'object';

typeof new Date() === 'object';

// 下面的容易令人迷惑,不要这样使用!
typeof new Boolean(true) === 'object';
typeof new Number(1) ==== 'object';
typeof new String("abc") === 'object';

// 函数
typeof function(){} === 'function';
typeof Math.sin === 'function';

문제를 발견합니다. 즉, typeof가 데이터 유형을 결정하는 데 정확하지 않습니다. 예를 들어 배열, 정규식, 날짜, 객체의 반환값 유형은 모두 객체이므로 일부 오류가 발생합니다.

따라서 유형을 결정하는 유형을 기반으로 Object.prototype.toString 메서드를 사용하여 데이터 유형을 추가로 결정해야 합니다.

동일한 데이터 유형의 경우 toString 메소드와 typeof 메소드의 반환 값의 차이점을 살펴보겠습니다.

"foo"String stringnew String("foo")Stringobjectnew Number(1.2)Numberobject사실이야 Booleanboolean new Boolean (true)Booleanobjectnew Date()Dateobjectnew Error()오류object새 배열(1, 2, 3) Arrayobject/abc/gRegExpobjectnew RegExp("야옹")RegExp 개체그래서 우리는 일반적으로 데이터 유형을 확인할 때 이 방법을 사용합니다. javascript 학습 튜토리얼】
toString 메소드를 사용하면 Array, Error, RegExp, Date 및 기타 유형을 올바르게 구별할 수 있음을 알 수 있습니다.
【관련 권장 사항:

위 내용은 JavaScript의 typeof는 어떤 데이터 유형을 반환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.