Maison > interface Web > js tutoriel > Résumé des méthodes de détection de types de données en JavaScript

Résumé des méthodes de détection de types de données en JavaScript

黄舟
Libérer: 2017-03-14 15:08:54
original
1189 Les gens l'ont consulté

Cet article répertorie les méthodes générales de détection de type Js, qui constituent un petit élément de la construction du système de connaissances Js.

1. Il existe 5 types de données de base dans Js

Non défini, Null, Booléen, String, Number( Contient NaN)

NaN n'est égal à aucun type de valeur, y compris NaN ; isNaN est utilisé pour déterminer si la valeur est de type NaN

2. Jugement de type

1. isFinite Is (number)
infini ? Sinon, renvoie true S'il s'agit de NaN, ou d'un infini positif ou négatif, ou d'un type non numérique, renvoie false

2. Lorsqu'ils sont utilisés, des espaces ou typeof(param)

valeur de retour

chaîne

numéro
booléen
non défini
fonction

object null renvoie également object

Sur la base de ce qui précède, le type de jugement peut être le suivant :

var obtainType = function(o){
     var t;
     if(o === null ) return “null”;
     else if(o !== o) return “NaN”;
     else if( (t = typeof o) !== ‘object’) return t;
}
Copier après la connexion
Vous pouvez identifier la fonction booléenne non définie de numéro de chaîne null et NaN.

Seul les objets sont laissés à la fin, comme

identification des tableaux et identification des types personnalisés

3 Pour identifier les types natifs tels que les tableaux, ce qui suit peut être. utilisé

function obtainType(type) {
    return function (obj) {
        return Object.prototype.toString.call(obj) === "[object " + type + "]"
    }
}

var isObject = isType("Object")
var isString = isType("String")
var isArray = Array.isArray || isType("Array")
var isFunction = isType("Function")
Copier après la connexion
4. Jugement de type personnalisé

/**
 * 返回函数的名字,可能为空串;不是函数,返回null
 */
Function.prototype.getName = function () {
    if ("name" in this) return this.name;
    return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];
};
Copier après la connexion
Les objets de type natif et de type personnalisé peuvent être jugés, donc

/**
 * 返回:null NaN undefined string number boolean
 * function Array String Object(包括一些自定义类型) 自定义类型
 */
var obtainType =function(o){
    /**
     * 获取参数类型
     * 对象直接量、Object.create、自定义构造函数的类属性皆为Object;
     * 识别出原生类型 (内置构造函数和宿主对象)
     */
    function classOf(obj){
        return Object.prototype.toString.call(obj).slice(8, -1);
    }

    /**
     * 返回函数的名字,可能为空串;不是函数,返回null
     */
    Function.prototype.getName = function () {
        if ("name" in this) return this.name;
        return this.name = this.toString().match(/function\s*([^(]*)\(/)[1];
    };
    var t, c, n;
    // 处理null值特殊情形
    if (o === null) return "null";
    // NaN:和自身值不相等
    if (o !== o) return "NaN";
    // 识别出原生值类型和函数、undefined
    if ((t = typeof o) !== "object") return t;
    // 识别出原生类型
    if ((c = classOf(o)) !== "Object") return c;
    // 返回自定义类型构造函数名字
    if (o.constructor && typeof o.constructor === "function" &&
        (n = o.constructor.getName()))
        return n;
    return "Object";
};
Copier après la connexion
5.

var strObj = new String('abc');

typeof strObj // "object"

obtainType(strObj) // "String"
Copier après la connexion
3.

Autres

1. Jugement de l'élément Dom

if(dom.nodeType){…Dom…}
if(dom.createElement)

2.

jQuery et autres jugements de type$('#aa') instance de jQuery//ne prend pas en charge l'extension de plusieurs fenêtres et
framessous-pages

3. if(a) a est nul non défini 0 "" NaN automatiquement converti en faux

Méthode d'écriture généralement recommandée

// bad
if (name !== '') {
    // ...stuff...
}

// good
if (name) {
    // ...stuff...
}

// bad
if (collection.length > 0) {
    // ...stuff...
}

// good
if (collection.length) {
    // ...stuff...
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal