Ongelma Testaus NaN JavaScript

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *