mozilla
Vos résultats de recherche

    L'opérateur typeof

    Résumé

    L'opérateur typeof renvoie une chaîne qui indique le type de son opérande.

    Syntaxe

    L'opérateur typeof est suivi de son opérande :

    typeof opérande

    Paramètre

    opérande est une expression qui représente la valeur dont on souhaite obtenir le type.

    Description

    Le tableau qui suit liste les résultats possibles de l'opérateur typeof. Pour plus d'informations sur les types et valeurs primitives en JavaScript, voir la page sur les types et structures de données JavaScript.

    Type Résultat
    indéfini "undefined"
    nul "object" (see below)
    booléen "boolean"
    nombre "number"
    chaîne de caractère "string"
    symbole (nouveauté d'ECMAScript 6) "symbol"
    objet de l'environnement (fourni par l'environnement dans lequel est utilisé JS) Résultat différent selon l'implémentation
    Objet Function (au sens ECMA-262, un objet qui implémente [[Call]]) "function"
    Tout autre objet "object"

    Exemple

    Cas « normaux »

    // Pour les nombres
    typeof 37 === 'number';
    typeof 3.14 === 'number';
    typeof Math.LN2 === 'number';
    typeof Infinity === 'number';
    typeof NaN === 'number'; // Bien que littéralement ce soit "Not-A-Number"...
    typeof Number(1) === 'number'; // cette forme ne doit pas être utilisée !
    
    
    // Les chaînes de caractères
    typeof "" === 'string';
    typeof "bla" === 'string';
    typeof (typeof 1) === 'string'; // typeof renvoie toujours une chaîne
    typeof String("abc") === 'string'; // cette forme ne doit pas être utilisée !
    
    
    // Les booléens
    typeof true === 'boolean';
    typeof false === 'boolean';
    typeof Boolean(true) === 'boolean'; // cette forme ne doit pas être utilisée !
    
    
    // Les symboles
    typeof Symbol() === 'symbol'
    typeof Symbol('foo') === 'symbol'
    typeof Symbol.iterator === 'symbol'
    
    
    // Indéfini
    typeof undefined === 'undefined';
    typeof blabla === 'undefined'; // pour une variable indéfinie
    
    
    // Les objets
    typeof {a:1} === 'object';
    
    // Utiliser la méthode Array.isArray ou Object.prototype.toString.call
    // afin de différencier les objets des tableaux
    typeof [1, 2, 4] === 'object';
    
    typeof new Date() === 'object';
    
    
    // Les expressions suivantes sont source de confusion
    // à ne pas utiliser sous cette forme
    typeof new Boolean(true) === 'object'; 
    typeof new Number(1) === 'object'; 
    typeof new String("abc") === 'object';
    
    
    // Les fonctions
    typeof function(){} === 'function';
    typeof Math.sin === 'function';
    

    null

    // Cela est valable depuis les commencements de JavaScript
    typeof null === 'object';
    

    Lors de la première implémentation de JavaScript, les valeurs JavaScript étaient représentées avec une étiquette de type et une valeur. Pour les objets, l'étiquette de type était 0. null était représenté par la valeur NULL (0x00 pour la plupart des plates-formes). Par conséquent, l'étiquette de type de null valait 0, d'où le comportement de typeof (source).

    Un correctif fut proposé pour ECMAScript mais il fut refusé. Avec cette version, on aurait eu typeof null === 'null'.

    Expressions rationnelles

    Les expressions rationnelles qu'on peut appeler directement furent parfois ajoutées de façon non standard dans certains navigateurs.

    typeof /s/ === 'function'; // Chrome 1 à 12 : Non conforme à ECMAScript 5.1
    typeof /s/ === 'object';   // À partir de Firefox 5 : Conforme à ECMAScript 5.1
    

    Spécifications

    Spécification Statut Commentaires
    Première édition d'ECMAScript. Standard Définition initiale. Implémentée avec JavaScript 1.1
    ECMAScript 5.1 (ECMA-262)
    La définition de 'The typeof Operator' dans cette spécification.
    Standard  
    ECMAScript 6 (ECMA-262)
    La définition de 'The typeof Operator' dans cette spécification.
    Draft  

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

    Internet Explorer : Les objets de l'environnement hôte ne sont pas des fonctions

    Pour les versions 6, 7 et 8 d'Internet Explorer, les objets de l'environnement hôte sont des objets et non des fonctions. Par exemple, on aura :

    typeof alert === 'object'

    Voir aussi

    Étiquettes et contributeurs liés au document

    Contributors to this page: BenoitL, teoli, Jeremie, SphinxKnight, Mgjbot
    Dernière mise à jour par : SphinxKnight,
    Masquer la barre latérale