Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'opérateur typeof retourne une chaîne de caractères indiquant le type de la valeur de son opérande.
Une expression représentant l'objet ou la valeur primitive dont on souhaite obtenir le type.
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.
| Indéfini | "undefined" |
| Nul | "object" (reason) |
| Booléen | "boolean" |
| Nombre | "number" |
| Grand Entier | "bigint" |
| Chaîne de caractères | "string" |
| Symbole | "symbol" |
| Fonction (implémente [[Call]] selon ECMA-262 ; les classes sont également des fonctions) | "function" |
| Tout autre objet | "object" |
Cette liste de valeurs est exhaustive. Aucun moteur conforme aux spécifications n'est signalé pour produire (ou n'a historiquement produit) des valeurs autres que celles énumérées.
Dans la première implémentation de JavaScript, les valeurs JavaScript étaient représentées par une balise de type et une valeur. La balise de type pour les objets était 0. null était représenté comme le pointeur NULL (0x00 sur la plupart des plateformes). Par conséquent, null avait 0 comme balise de type, d'où la valeur de retour de typeof "object". (référence (angl.))
Une correction a été proposée pour ECMAScript (avec une option à activer), mais a été rejetée (angl.). Cela aurait donné typeof null === "null".
Tous les constructeurs appelés avec new retourneront des valeurs non primitives ("object" ou "function"). La plupart retournent des objets, à l'exception notable de Function, qui retourne une fonction.
L'opérateur typeof a une priorité plus élevée que les opérateurs binaires tels que l'addition (+). Par conséquent, des parenthèses sont nécessaires pour évaluer le type d'un résultat d'addition.
typeof fonctionne avec les identifiants non déclarés, retournant "undefined" au lieu de lancer une erreur.
Cependant, utiliser typeof sur des déclarations lexicales (let const, using await using et class) dans le même bloc avant le lieu de déclaration générera une ReferenceError. Les variables à portée de bloc se trouvent dans une zone morte temporelle depuis le début du bloc jusqu'à ce que l'initialisation soit traitée, période pendant laquelle une erreur sera levée si elles sont accessibles.
Voir l'opérateur typeof et undefined pour plus de détails.
Tous les navigateurs actuels exposent un objet hôte non standard document.all avec le type undefined.
Bien que document.all soit également équivalent à faux et égal à undefined de manière lâche, il n'est pas undefined. Le cas de document.all ayant le type "undefined" est classé dans les standards web comme une « violation volontaire » de la norme ECMAScript originale pour la compatibilité web.
typeof est très utile, mais il n'est pas aussi polyvalent que nécessaire. Par exemple, typeof [] est "object", tout comme typeof new Date(), typeof /abc/, etc.
Pour une plus grande spécificité dans la vérification des types, nous présentons une fonction personnalisée type(value), qui imite en grande partie le comportement de typeof, mais pour les non-primitifs (c'est-à-dire les objets et les fonctions), elle retourne un nom de type plus granulaire lorsque cela est possible.
Pour vérifier des variables potentiellement inexistantes qui autrement déclencheraient une ReferenceError, utilisez typeof nonExistentVar === "undefined" car ce comportement ne peut pas être imité avec du code personnalisé.
| ECMAScript® 2027 Language Specification # sec-typeof-operator |
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 8 mars 2026 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.