typeof
je JavaScript ključna riječ koja će vratiti tip varijable kada je pozovete. To možete koristiti za provjeru parametara funkcije ili provjeru jesu li definirane varijable. Postoje i druge namjene.
typeof
Operater je korisno, jer to je jednostavan način da provjerite tip varijable u kodu. To je važno jer je JavaScript dinamički tipkan jezik. To znači da vam nije potrebno dodijeliti tipove varijablama kada ih stvarate. Budući da varijabla nije ograničena na ovaj način, njezin se tip može mijenjati tijekom izvođenja programa.
Na primjer:
var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object
Kao što možete vidjeti iz gornjeg primjera, varijabla u JavaScript-u može mijenjati vrste tijekom izvođenja programa. To je teško pratiti kao programera i ovdje je typeof
operater koristan.
typeof
Operater vraća string koji predstavlja trenutnu tip varijable. Koristite ga tipkanjem typeof(variable)
ili typeof variable
. Vraćajući se na prethodni primjer, pomoću njega možete provjeriti vrstu varijable x
u svakoj fazi:
var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object
To može biti korisno za provjeru vrste varijable u funkciji i nastavak prema potrebi.
Evo primjera funkcije koja može uzeti varijablu koja je niz ili broj:
function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }
Drugi način na koji typeof
operater može biti koristan je osiguravanjem definiranja varijable prije nego što joj pokušate pristupiti u kodu. To može pomoći u sprječavanju pogrešaka u programu koje se mogu pojaviti ako pokušate pristupiti varijabli koja nije definirana.
function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }
Izlaz typeof
operatora možda neće uvijek biti onakav kakav očekujete kada provjeravate broj.
Brojevi se mogu pretvoriti u vrijednost NaN (nije broj) iz više razloga.
console.log(typeof NaN); //"number"
Možda ste pokušali pomnožiti broj s objektom jer ste zaboravili pristupiti broju unutar objekta.
var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number
Kada provjeravate broj, nije dovoljno provjeriti izlaz typeof
broja, jer NaN
također
prolazi ovaj test.
Ova funkcija provjerava brojeve i također ne dopušta NaN
prosljeđivanje vrijednosti.
function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }
Iako mislimo da je ovo korisna metoda provjere valjanosti, moramo biti oprezni jer javascript ima čudnih dijelova, a jedan od njih rezultat je typeof
pretjeranih uputa. Na primjer, u javascriptu su mnoge stvari samo objects
tako da ćete pronaći.
var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object
Više informacija:
MDN dokumentacija za tip