Maison  >  Article  >  interface Web  >  Quels types de données le typeof de JavaScript peut-il renvoyer ?

Quels types de données le typeof de JavaScript peut-il renvoyer ?

青灯夜游
青灯夜游original
2021-12-08 16:58:3512858parcourir

En JavaScript, les types de données que l'opérateur typeof peut renvoyer sont : "undefined", "object", "boolean", "number", "string", "symbol", "function", etc.

Quels types de données le typeof de JavaScript peut-il renvoyer ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

Utilisez l'opérateur typeof pour renvoyer le type de données de la variable.

Regardons la valeur de typeof correspondant à chaque type de données :

Data type Result
Undefined "undefined"
Null "objet"
Booléen "booléen"
Nombre "numéro"
chaîne "chaîne"
Symbole (nouveau dans ECMAScript 6) "symbole"
Hôte objet (Fourni par l'environnement JS, tel que le navigateur) Dépend de l'implémentation
Objet de fonction "fonction"
tout autre objet "objet"

Regardez le spécifique exemples :

// 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';

Nous trouverons un problème, c'est-à-dire que le type de n'est pas précis pour déterminer le type de données. Par exemple, le type de valeur de retour des tableaux, des expressions régulières, des dates et des objets est entièrement un objet, ce qui provoquera des erreurs.

Donc, sur la base du type de détermination du type, nous devons également utiliser la méthode Object.prototype.toString pour déterminer davantage le type de données.

Regardons la différence entre les valeurs de retour​​de la méthode toString et de la méthode typeof dans le cas du même type de données :

data toString typeof
"foo" String string
new String("foo") String object
new Number(1.2) Number object
vrai Booléen booléen
nouveau Booléen (vrai) Booléen objet
nouvelle Date() Date objet
nouvelle Erreur() Erreur objet
nouveau tableau (1, 2, 3) Array object
/abc/g RegExp object
new RegExp("meow") RegExp object

Vous pouvez voir que l'utilisation de la méthode toString peut correctement distinguer les types Array, Error, RegExp, Date et autres.

Nous utilisons donc généralement cette méthode pour vérifier le type de données.

【Recommandations associées : Tutoriel d'apprentissage Javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn