JavaScript adattípusok: Typeof Explained

typeofegy 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 typeofoperá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 typeofitt hasznos az operátor.

Az typeofoperá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 xegyes 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 typeofoperá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... }

typeofElő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ő typeofegy szám kimenetét ellenőrizni , mivel NaNszinté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 typeoftúlzott utasítások eredménye . Például a javascriptben sok minden csak objectsmegtalá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