JavaScript-datatyper: Type forklaret
typeof
er et JavaScript-nøgleord, der returnerer typen af en variabel, når du kalder det. Du kan bruge dette til at validere funktionsparametre eller kontrollere, om variabler er defineret. Der er også andre anvendelser.
Den typeof
Operatøren er nyttigt, fordi det er en nem måde at kontrollere typen af en variabel i din kode. Dette er vigtigt, fordi JavaScript er a er et dynamisk skrevet sprog. Dette betyder, at du ikke er forpligtet til at tildele typer til variabler, når du opretter dem. Da en variabel ikke er begrænset på denne måde, kan dens type ændre sig i løbet af et program.
For eksempel:
var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object
Som du kan se fra ovenstående eksempel, kan en variabel i JavaScript ændre typer under udførelsen af et program. Dette kan være svært at holde styr på som programmør, og det er her typeof
operatøren er nyttig.
Den typeof
operatør returnerer en streng, der repræsenterer den aktuelle type af en variabel. Du bruger det ved at skrive typeof(variable)
eller typeof variable
. Når vi går tilbage til det foregående eksempel, kan du bruge det til at kontrollere typen af variablen x
på hvert trin:
var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object
Dette kan være nyttigt til at kontrollere typen af en variabel i en funktion og fortsætte efter behov.
Her er et eksempel på en funktion, der kan tage en variabel, der er en streng eller et tal:
function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }
En anden måde, som typeof
operatøren kan være nyttig på, er ved at sikre, at en variabel defineres, før du prøver at få adgang til den i din kode. Dette kan hjælpe med at forhindre fejl i et program, der kan opstå, hvis du prøver at få adgang til en variabel, der ikke er defineret.
function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }
typeof
Operatørens output er muligvis ikke altid det, du forventer, når du kontrollerer et nummer.
Tal kan slå til værdien NaN (ikke et nummer) af flere grunde.
console.log(typeof NaN); //"number"
Måske forsøgte du at multiplicere et tal med et objekt, fordi du glemte at få adgang til nummeret inde i objektet.
var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number
Når du kontrollerer for et nummer, er det ikke tilstrækkeligt at kontrollere output typeof
for et nummer, da NaN
også
består denne test.
Denne funktion tjekker for tal og tillader heller ikke NaN
værdien at passere.
function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }
Selv troede dette er en nyttig valideringsmetode, skal vi være forsigtige, fordi javascript har nogle underlige dele, og en af dem er resultatet af typeof
over bestemte instruktioner. For eksempel er der mange ting i javascript, objects
så du finder det.
var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object
Mere information:
MDN-dokumentation for typeof