Maison >interface Web >js tutoriel >Comment déterminer le type de données en js

Comment déterminer le type de données en js

王林
王林avant
2020-05-13 09:18:403988parcourir

Comment déterminer le type de données en js

Méthode 1, méthode intégrée js typeof

Le meilleur choix pour détecter les types de données de base est d'utiliser typeof

typeof Pour déterminer le type de données, vous ne pouvez distinguer que sept types de base, à savoir "numéro", "chaîne", "non défini", "booléen", "objet", "fonction" et "symbole" (nouveau dans ES6 ).

Pour les tableaux, les valeurs nulles et les objets, la relation est compliquée et l'utilisation de typeof renverra uniformément la chaîne "objet".

Exemple :

var bool = true
var num = 1
var str = 'abc'
var und = undefined
var nul = null
var arr = [1,2,3]
var obj = {}
var fun = function(){}
var reg = new RegExp()

console.log(typeof bool); //boolean
console.log(typeof num); //number
console.log(typeof str); //string
console.log(typeof und); //undefined
console.log(typeof nul); //object
console.log(typeof arr); //object
console.log(typeof obj); //object
console.log(typeof reg); //object
console.log(typeof fun); //function

Comme le montrent les résultats, sauf le retour de l'objet lors de la détection de null et la remise de la fonction lors de la détection de la fonction. Pour les types référence, la valeur de retour est object.

Méthode 2, Object.prototype.toString()

La méthode Object.prototype.toString renvoie la chaîne de type de l'objet, elle peut donc être utilisée pour déterminer le type d'une valeur.

var obj = {};
obj.toString() // "[object Object]"上面代码调用空对象的toString方法,结果返回一个字符串object Object,其中第二个Object表示该值的构造函数。这是一个十分有用的判断数据类型的方法。

Object.prototype.toString.call(value)

Le code ci-dessus signifie appeler la méthode Object.prototype.toString sur la valeur.

Les valeurs de retour de la méthode Object.prototype.toString des différents types de données sont les suivantes.

数值:返回[object Number]。
字符串:返回[object String]。
布尔值:返回[object Boolean]。
undefined:返回[object Undefined]。
null:返回[object Null]。
数组:返回[object Array]。
arguments 对象:返回[object Arguments]。
函数:返回[object Function]。
Error 对象:返回[object Error]。
Date 对象:返回[object Date]。
RegExp 对象:返回[object RegExp]。
其他对象:返回[object Object]。

Ensuite, en utilisant cette fonctionnalité, vous pouvez écrire une fonction de jugement de type plus précise que l'opérateur typeof.

Encapsule une fonction pour déterminer le type comme suit :

var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};
type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"

De plus : vous pouvez également ajouter une méthode pour déterminer spécifiquement un certain type de données

var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};

var arr = ['Null', 'Undefined', 'Object', 'Array', 'String', 'Number', 
 'Boolean', 'Function', 'RegExp']

arr.forEach(function (t) {
  type['is' + t] = function (o) {
    return type(o) === t.toLowerCase();
  };
});

Après cela, nous pouvons encapsuler des méthodes à utiliser pour différents besoins : comme suit

type.isObject({}) // true
type.isNumber(NaN) // true
type.isRegExp(/abc/) // true

Tutoriel recommandé : Tutoriel d'introduction js

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer