Ero isNaN: n ja luvun.isNaN välillä
Lähes kaikki tietävät, mikä ” ei ole ” ja miten sitä käytetään. Se tarkoittaa ”onko se asia, joka näyttää numerolta, todella numerolta vai ei?” Se palauttaa arvon tosi, jos annettu arvo on ”Ei luku”. Oletan, että sinulla on asia. Ok, nyt tässä on kauppa; mikä on ero isNaN: n ja Number.isNaN: n välillä?
Ennen kuin aloitan selittämisen, haluan kiittää ystäväni Rafaelia siitä, että hän kannusti minua kirjoittamaan.
Aloitetaan isNaN: stä. Tämä on globaali toiminto, johon voit soittaa kaikkialta. Katsotaanpa se toiminnassa:
const badDivision = 17 / "something"; // NaN
isNaN(badDivision); // true
Se on niin yksinkertaista, mutta on joitakin vääräohjauksia. Tässä on esimerkkejä:
Kuten isNaN: n mukaan näet, toteutus käsittelee merkkijonoa arvona ja palauttaa tuloksen tämän perusteella. Tarkista `isNaN (’blabla’)`
Joten ratkaistaksemme nämä väärinkäsitykset Staattinen Number.isNaN-menetelmä tulee EcmaScript 2015: n mukana # Number.isNaN
Mitä se tekee?
Minun tapauksessani minulla on menetelmä, joka hyväksyy kaksi parametria numerotyypiksi ja tekee animaatiota kohteen skaalauksessa esine. Jotenkin sen jälkeen, kun olen tehnyt vähän refraktointia, sain outoa käyttäytymistä. Kyllä, minun olisi pitänyt kirjoittaa yksikötestit, häpeä minua. Joissakin tapauksissa menetelmä saa määrittelemättömät parametrit. Joten minun on tarkistettava ne.
Kirjoitin tämän:
Huolimattomuuteni johtaa minut väärään logiikkaan. Koska Number.isNaN (määrittelemätön) palauttaa minut vääräksi. (vanha isNaN (määrittelemätön) palauttaa arvon tosi) Joten muutin näin:
function animate(targetScaleX, targetScaleY) {
if (!Number.isNaN(targetScaleX * targetScaleY)) {
return;
} // Do Animation
}
Joten se näyttää toimivan. Mutta halusin huolehtia kaikista mahdollisista epäonnistumisista. Ehkä saan nollan määrittelemättömän sijaan. Jos saan tyhjän, logiikkani epäonnistuu. Miksi?
null * null; // 0
null * 8 // 0
Luulen, että näet asian. Joten päivitin koodin näin:
Tavoitteenani oli tarkistaa kaksi arvoa määrittelemättömiksi tai nolliksi. Ja matkani päätyy kirjoittamaan artikkeli ja päivittämään tietoni. Toteutus ei ole hienoa, tiedän, mutta matka oli opettavainen.