Dit artikel heeft een redactionele beoordeling nodig. Hoe u kunt helpen.
Deze vertaling is niet volledig. Help dit artikel te vertalen vanuit het Engels.
De typeof
operator retourneert een string die het type van de ongeëvalueerde operand weergeeft.
Syntax
The typeof
operator wordt gevolgd door zijn operand:
typeof operand
Parameters
operand
is een uitdrukking die het object of de primitive voorstelt waarvan het type moet worden geretourneerd.
Beschrijving
De volgende tabel vat de mogelijke waardes die typeof
kan retourneren. Voor meer informatie over types of primitives, zie pagina JavaScript data structure.
Type | Resultaat |
---|---|
Undefined | "undefined" |
Null | "object" (see below) |
Boolean | "boolean" |
Number | "number" |
String | "string" |
Symbol (nieuw in ECMAScript 2015) | "symbol" |
Host object (voorzien door de JS omgeving) | Implementatie-afhankelijk |
Function object (implementeert [[Call]] in termen van ECMA-262) | "function" |
Elk ander object | "object" |
Voorbeelden
// Nummers typeof 37 === 'number'; typeof 3.14 === 'number'; typeof(42) === 'number'; typeof Math.LN2 === 'number'; typeof Infinity === 'number'; typeof NaN === 'number'; // Despite being "Not-A-Number" typeof Number(1) === 'number'; // but never use this form! // Strings typeof "" === 'string'; typeof "bla" === 'string'; typeof (typeof 1) === 'string'; // typeof always returns a string typeof String("abc") === 'string'; // but never use this form! // Booleans typeof true === 'boolean'; typeof false === 'boolean'; typeof Boolean(true) === 'boolean'; // but never use this form! // Symbolen typeof Symbol() === 'symbol' typeof Symbol('foo') === 'symbol' typeof Symbol.iterator === 'symbol' // Ongedefinieerd typeof undefined === 'undefined'; typeof declaredButUndefinedVariable === 'undefined'; typeof undeclaredVariable === 'undefined'; // Objecten typeof {a:1} === 'object'; // gebruik Array.isArray of Object.prototype.toString.call // om het verschil aan te geven tussen normale objecten en // arrays (rijen). typeof [1, 2, 4] === 'object'; typeof new Date() === 'object'; // Het volgende is verwarrend. Niet gebruiken! typeof new Boolean(true) === 'object'; typeof new Number(1) === 'object'; typeof new String("abc") === 'object'; // Functies typeof function(){} === 'function'; typeof class C {} === 'function'; typeof Math.sin === 'function';
null
// Dit geldt sinds het ontstaan van JavaScript typeof null === 'object';
In de oorspronkelijke implementatie van JavaSCript werden JavaScript-waarden gerepresenteerd met een type-label en een waarde. Het type-label voor de meeste objecten was 0. null
werd voorgesteld als de NULL pointer (0x00 in de meeste platformen). Bijgevolg had null het type-label 0, wat de foute typeof
retourneer-waarde verklaart. (referentie)
Een oplossing (via een opt-in) werd voorgesteld voor ECMAScript, maar die werd afgekeurd. Anders zou het er als volgt hebben uitgezien: typeof null === 'null'
.
Reguliere uitdrukkingen
Aanroepbare reguliere uitdrukkingen waren een niet-standaard toevoeging in sommige browsers.
typeof /s/ === 'function'; // Chrome 1-12 Niet comform aan ECMAScript 5.1 typeof /s/ === 'object'; // Firefox 5+ Conform aan ECMAScript 5.1
Specificaties
Specificatie | Status | Opmerking |
---|---|---|
ECMAScript 2017 Draft (ECMA-262) The definition of 'The typeof Operator' in that specification. |
Draft | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'The typeof Operator' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'The typeof Operator' in that specification. |
Standard | |
ECMAScript 3rd Edition (ECMA-262) The definition of 'The typeof Operator' in that specification. |
Standard | |
ECMAScript 1st Edition (ECMA-262) The definition of 'The typeof Operator' in that specification. |
Standard | Oorspronkelijke definitie. Geïmplementeerd in JavaScript 1.1. |
Browser-compatibiliteit
Eigenschap | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basis-ondersteunning | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Eigenschap | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basis-ondersteuning | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
IE-specifieke opmerkingen
In IE 6, 7, en 8 zijn een groot aantal host objecten objecten en geen functions. bijvoorbeeld:
typeof alert === 'object'