JavaScript tipovi podataka: Objašnjeno

typeofje 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.

typeofOperater 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 typeofoperater koristan.

typeofOperater 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 xu 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 typeofoperater 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 typeofoperatora 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 typeofbroja, jer NaNtakođer

prolazi ovaj test.

Ova funkcija provjerava brojeve i također ne dopušta NaNprosljeđ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 typeofpretjeranih uputa. Na primjer, u javascriptu su mnoge stvari samo objectstako 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