typeof
egy olyan JavaScript kulcsszó, amely a változó típusát adja vissza, amikor meghívja. Ezzel ellenőrizheti a függvény paramétereit, vagy ellenőrizheti, hogy vannak-e meghatározva változók. Vannak más felhasználások is.
Az typeof
operátor azért hasznos, mert egyszerű módja annak, hogy ellenőrizze a kódban szereplő változó típusát. Ez azért fontos, mert a JavaScript egy dinamikusan beírt nyelv. Ez azt jelenti, hogy a változók létrehozásakor nem kell típusokat rendelni a változókhoz. Mivel a változó nincs ilyen módon korlátozva, annak típusa megváltozhat a program futása alatt.
Például:
var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object
Amint a fenti példából látható, a JavaScript egyik változója a program futtatása során megváltoztathatja a típusát. Ezt nehéz lehet programozóként nyomon követni, és typeof
itt hasznos az operátor.
Az typeof
operátor olyan karakterláncot ad vissza, amely a változó aktuális típusát reprezentálja. A typeof(variable)
vagy beírásával használhatja typeof variable
. Visszatérve az előző példához, felhasználhatja a változó típusának ellenőrzésére az x
egyes szakaszokban:
var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object
Ez hasznos lehet egy függvény változójának ellenőrzéséhez és a megfelelő folytatáshoz.
Az alábbiakban bemutatunk egy példát egy függvényre, amely stringet vagy számot tartalmazó változót vehet fel:
function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }
Az typeof
operátor egy másik hasznos módja az lehet, ha biztosítunk egy változó definiálását, mielőtt megkísérelnénk elérni azt a kódban. Ez segít megelőzni a program hibáit, amelyek előfordulhatnak, ha megpróbál elérni egy nem definiált változót.
function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }
typeof
Előfordulhat, hogy az operátor kimenete nem mindig olyan, mint amire számíthat.
A számok több okból befordulhatnak a NaN (Not A Number) értékbe.
console.log(typeof NaN); //"number"
Talán megpróbált megszorozni egy számot egy objektummal, mert elfelejtette elérni az objektumon belüli számot.
var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number
Szám ellenőrzése során nem elegendő typeof
egy szám kimenetét ellenőrizni , mivel NaN
szintén
átmegy ezen a teszten.
Ez a funkció ellenőrzi a számokat, és nem teszi lehetővé az NaN
érték átadását sem.
function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }
Még ha azt is gondolnánk, hogy ez egy hasznos validációs módszer, körültekintőnek kell lennünk, mert a javascriptnek vannak furcsa részei, és az egyik a typeof
túlzott utasítások eredménye . Például a javascriptben sok minden csak objects
megtalálható.
var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object
Több információ:
MDN dokumentáció a typeof számára