alun Perin julkaistu Tippua JavaScript-uutiskirje.
JavaScript, erityinen arvo NaN
(eli ”not a number”) käytetään edustamaan tulos laskutoimituksen joka voi olla edustettuina mielekäs määrä., Esimerkiksi:
Sinulla on myös todennäköistä törmätä NaN
kun käytät parseInt
tai parseFloat
poimia numeron merkkijono, kuten tässä esimerkissä:
seurauksena, JavaScript kehittäjät usein täytyy testata tulos muuttuja nähdä, onko se sisältää NaN
tai onko se mielekäs arvo sen sijaan. On olemassa useita erilaisia tapoja tarkistaa, jos arvo on NaN
, mutta valitettavasti useimmat niistä ovat epäluotettavia., Käykäämme läpi joitakin niistä ja katsokaamme, miten ne epäonnistuvat.
looginen asia on tarkistaa, vastaako tulosNaN
.
Mitä”s tekeillä? JavaScript, NaN
– on kunnia olla ainoa arvo, joka ei vastaa itse. Se tarkoittaa, että voimme”t selvittää, onko arvo on NaN
tarkistamalla tasa-arvoa NaN
koska vastaus on aina ei.
Mitä muuta voisimme kokeilla? Entäpä rakennettu isNaN
funktio?,
Mahtava! Tämä näyttää toimivan. Ja itse asiassa se toimii joissakin olosuhteissa. Kuitenkin, huolimatta nimi, tarkoitus isNaN
toiminto isn”t tarkistaa, onko arvo on NaN
. Sen sijaan tarkoituksena on tarkistaa, eikö arvoa voi pakottaa johonkin numeroon. Tämän vuoksi se voi palauttaa vääriä positiivisia., Harkitse seuraavia:
jos olet varma, että olet tekemisissä vain numeroita tai NaN
, isNaN
toiminto isn”t oikein sovi tähän tarkoitukseen.
Kuitenkin, se kääntyy pois, että ECMAScript 6 luo uuden toiminnon tarkoitus tarkistaa, onko arvo on NaN
. Erehdyttävästi, tätä toimintoa kutsutaan myös isNaN
, vaikka se on kiinnitetty Number
objekti, pikemminkin kuin suoraan globaaliin olioon., Sitä voi käyttää näin:
Excellent! Meillä on menetelmä, joka todella toimii. Valitettavasti Number.isNaN
on saatavilla vain uudempia versioita FireFox ja Chrome, ja isn”t vielä tue IE tai muiden suurten selainten. Tämä voi olla toteuttamiskelpoinen lähestymistapa tulevaisuudessa, mutta tällä hetkellä sitä voidaan käyttää vain hyvin ahtaissa olosuhteissa.
Maybe we can check NaN
”S type instead?
Kyllä, sinä”uudelleen lukea sitä oikein., JavaScript-arvo NaN
tyyppi number
. Siitä ei ole paljon apua.
joten mitä voimme tehdä saadaksemme jotain, joka toimii oikein, mutta on saatavilla myös ristiselaimena? Muistatko, miten mainitsin, että NaN
on Javascriptissä ainoa arvo, joka ei ole sama kuin itse? Voimme hyödyntää tätä tosiasiaa.
tällä Hetkellä paras tapa tarkistaa, onko arvo on NaN
on tarkistaa, onko se ei ole yhtä suuri kuin itse. Jos näin on, niin tiedät, että se on NaN
.,
tietenkin tämän tekniikan käyttäminen on”t erityisen luettavaa, joten on tavallista kääriä se hyödyllisyysmenetelmäksi, joka viestii tarkoituksesta selkeämmin. Sekä Underscore että Lo-Dash tarjoavat toteutuksia.
toivottavasti tämä on auttanut sinua saamaan parempi käsitys siitä, koukero NaN
.
Kiitos lukemisesta!
Josh Clanton