JavaScripti andmetüübid: Typeof Explained

typeofon JavaScripti märksõna, mis tagastab muutuja tüübi, kui seda kutsute. Seda saate kasutada funktsiooni parameetrite kinnitamiseks või muutujate määratlemise kontrollimiseks. On ka muid kasutusalasid.

typeofOperaator on kasulik, sest see on lihtne viis kontrollida tüüpi muutuja koodi. See on oluline, kuna JavaScript on dünaamiliselt sisestatud keel. See tähendab, et muutujate jaoks ei pea nende loomisel tüüpe määrama. Kuna muutuja pole sellisel viisil piiratud, võib selle tüüp programmi käitamise ajal muutuda.

Näiteks:

var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object

Nagu ülaltoodud näitest näha, võib JavaScripti muutuja kogu programmi täitmise ajal muuta tüüpe. Seda võib olla keeruline programmeerijana jälgida ja siin on typeofoperaator kasulik.

typeofOperaator tagastab stringi, mis tähistab praegust tüüpi muutuja. Kasutate seda kirjutades typeof(variable)või typeof variable. Eelmise näite juurde naastes saate seda kasutada muutuja tüübi kontrollimiseks xigas etapis:

var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object

See võib olla kasulik funktsiooni muutuja tüübi kontrollimiseks ja vastavalt vajadusele jätkamiseks.

Siin on näide funktsioonist, mis võib võtta muutuja, mis on string või arv:

function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }

Teine võimalus, kuidas typeofoperaator võib olla kasulik, on see, et muutuja määratletakse enne, kui proovite sellele oma koodis juurde pääseda. See aitab vältida vigu programmis, mis võivad ilmneda, kui proovite juurde pääseda määratlemata muutujale.

function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }

typeofOperaatori väljund ei pruugi alati olla see, mida ootate numbri kontrollimisel.

Numbrid võivad pöörduda NaN (Not A Number) väärtuseks mitmel põhjusel.

console.log(typeof NaN); //"number"

Võib-olla proovisite korrutada numbrit objektiga, kuna unustasite objekti sees olevale numbrile juurde pääseda.

var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number

Numbri kontrollimisel ei piisa typeofnumbri väljundi kontrollimisest , sest NaNka

läbib selle testi.

See funktsioon kontrollib numbreid ja ei luba ka NaNväärtusel edasi minna.

function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }

Isegi kui arvan, et see on kasulik valideerimismeetod, peame olema ettevaatlikud, kuna javascriptil on imelikke osi ja üks neist tuleneb typeofkonkreetsete juhiste ületamisest. Näiteks javascriptis on paljud asjad lihtsalt objectsnii, et leiate.

var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object

Rohkem informatsiooni:

MDN-i dokumentatsioon