NaN: n tarkistaminen JavaScriptissa

NaN: n (”ei numero”) tarkistaminen on yhtä helppoa kuin itsesäätöisyyden tarkistaminen JavaScriptissa.

Tohtori Derek Austin 🥳

Seuraa

15. syyskuuta 2019 · 4 min luettu

Kuva: Rattap on Unsplash

JavaScriptissä erityisarvoa NaN (eli” ei numero ”) käytetään kuvaamaan matemaattisen laskelman tulosta, jota ei voida esittää mielekäs luku. – Joshua Clanton tippuvassa JavaScriptissä

Erityisarvo NaN näkyy Javascriptissa, kun Math toiminnot epäonnistuvat (Math.sqrt(-37)) tai kun numeron jäsentämistä yrittävä toiminto epäonnistuu (parseInt("No integers here")).

NaN myrkyttää sitten kaikki muut matematiikkatoiminnot, mikä johtaa kaikkiin muihin matematiikkatoimintoihin, jotka johtavat NaN.

Kuva Chris Barbalis Unsplashista

Huomaa, että JavaScriptissä jakaminen 0: lla palauttaa Infinity, ei NaN:

Tämä tulos johtuu siitä, kuinka kelluva poi nt on määritelty yleisemmin kuin vain Javascript. Miksi? Karkeasti, koska 1/0 on 1 / x: n raja, kun x lähestyy nollaa. Ja 0/0: lla ei ole lainkaan järkevää tulkintaa, joten NaN.

Mikä NaN silti on?

NaN on globaalin objektin ominaisuus. NaN: n alkuarvo on Not-A-luku – sama kuin Number.NaN: n arvo. – MDN-dokumentit

Kuva Andrew Buchanan Unsplashista

NaN: n tarkistus on vaikeampi kuin miltä näyttää

Valitettavasti :

  1. typeof NaN on” numero ”
  2. NaN on epätasainen kaikkien muiden JavaScript-arvojen kanssa.

Katso tämä esimerkki koodista:

Kuinka siis tarkistamme, onko meillä NaN -arvo, joka myrkyttää matematiikan?

Kuva: Wolfgang Rottmann Unsplashista

Tarkista NaN itsetasauksella

” NaN, ja vain NaN, vertaa eriarvoisuutta itseensä. ” – MDN-dokumentit

Javascriptissa paras tapa tarkistaa NaN on tarkistaa itsesi tasa-arvo käyttämällä joko sisäänrakennettuja tasa-arvooperaattoreita, == tai ===.

Koska NaN ei ole sama kuin itsensä, NaN != NaN palauttaa aina true.

Tietenkin, tällainen koodissasi oleva NaN -testi ei ole aina luettavissa, joten kannattaa käyttää kommenttia tai luoda kääritystoiminto:

Sillä ei ole merkitystä, jos käytät != tai !== tarkistaaksesi, onko NaN.

Kuva Erik Mclean Unsplashista

Tarkista NaN Object.is ()

Object.is() -menetelmä määrittää, ovatko kaksi arvoa sama arvo.”- MDN-dokumentit

Toisin kuin tiukat ja löysät tasa-arvooperaattorit, ES6-apumenetelmä Object.is() ei ota huomioon NaN olemaan sama kuin itsensä:

Joten, jos vaihdat === kohtaan Object.is(), sinun ei tarvitse koskaan huolehtia NaN -tietojen tarkistamisesta jollakin erityisellä tavalla. Ongelma ratkaistu!

Kirjoitin Object.is() -sovelluksen käytöstä JavaScriptissä toisessa artikkelissa:

Yksi huomautus termeistä – Object.is() on globaalin Object luokan funktio, en kutsu sitä ”tasa-arvooperaattoriksi”, kuten == tai ===.

Esimerkiksi Jest-testeissä menetelmä .toBe(), joka käyttää === eroaa menetelmästä .toEqual(), joka käyttää Object.is().

Päättely Tässä on syytä mainita, että JavaScript ES6 Set, jota käytetään yksilöllisten arvojen löytämiseen, säilyttää vain yhden kopion NaN arvo.

Kuva: Tony Hand on Unsplash

Sana numerosta .isNan ()

Nykyaikaisella JavaScriptiä on jo toteutettu tarkistaaksesi NaN nimeltään Number.isNan(), mikä toimii mielestäsi se olisi. Esimerkki:

Huomaa, että Number.isNan() eroaa globaalista isNan() -funktiosta, joka on vanhempi toteutus, jonka varsinainen tarkoitus on tarkistaa, ettei arvoa voida pakottaa numero.

Tässä on täydellisyyden ero:

  • isNaN() palauttaa true jos arvo on tällä hetkellä NaN tai jos se on NaN sen jälkeen kun se on pakotettu numeroon. Toisin sanoen, jos se saa arvon, joka voidaan pakottaa numerolle, isNaN () palauttaa arvon false.
  • Number.isNaN() palauttaa arvon true vain, jos arvo on tällä hetkellä NaN.

Joten jos tuet vanhoja selaimia (etenkin Internet Exploreria), jotka eivät tue Number.isNan(), silloin on parasta tarkistaa itsesi tasa-arvo.

Kuva: Nick Hillier Irrota ruudun poisto

Leave a Reply

Vastaa

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