JavaScript-datatyper: Type forklaret

typeofer 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 typeofOperatø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 typeofoperatøren er nyttig.

Den typeofoperatø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 xpå 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 typeofoperatø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... }

typeofOperatø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 typeoffor et nummer, da NaNogså

består denne test.

Denne funktion tjekker for tal og tillader heller ikke NaNvæ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 typeofover bestemte instruktioner. For eksempel er der mange ting i javascript, objectsså 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