eredetileg megjelent a csepegtető JavaScript hírlevél.
A JavaScriptben a NaN (azaz “nem szám”) speciális értéket használjuk egy olyan matematikai számítás eredményének ábrázolására, amelyet nem lehet értelmes számként ábrázolni., Például:
Te is valószínű, befut NaN ha az parseInt vagy parseFloat kivonat egy szám string, mint ebben a példában:
ennek eredményeként, a JavaScript fejlesztők gyakran szükséges, hogy a teszt eredménye változó, hogy vajon tartalmaz NaN vagy hogy ez egy értelmes érték helyett. Számos különböző módja van annak ellenőrzésére, hogy egy érték NaN, de sajnos a legtöbbjük megbízhatatlan., Sétáljunk át néhányon, és lássuk, hogyan buknak el.
a logikus dolog az, hogy ellenőrizze, hogy az eredmény egyenlő-e NaN.
mi folyik itt? A JavaScript-ben a NaN az egyetlen olyan érték, amely nem egyenlő önmagával. Ez azt jelenti, hogy nem tudjuk megtudni, hogy egy érték NaNa NaN egyenlőség ellenőrzésével, mert a válasz mindig nem lesz.
mi mást próbálhatnánk? Mi a helyzet a beépített isNaN funkcióval?,
Úgy tűnik, ez működik. És valójában bizonyos körülmények között működik. A név ellenére azonban a isNaN függvény célja nem annak ellenőrzése, hogy egy érték NaN. Ehelyett a cél annak ellenőrzése, hogy egy értéket nem lehet-e egy számra kényszeríteni. Emiatt, akkor vissza hamis pozitív., Vegye figyelembe a következőket:
hacsak nem biztos abban, hogy csak számokkal fog foglalkozni, vagy NaN, a isNaN funkció nem alkalmas erre a célra.
azonban kiderül, hogy az ECMAScript 6 új funkciót hoz létre annak ellenőrzésére, hogy egy érték NaN. Ezt a függvényt is nevezik isNaN, bár a Number objektumhoz van csatolva, nem pedig közvetlenül a globális objektumhoz., Ezt fel lehet használni, mint ez:
kiváló! Van egy módszer, ami tényleg működik. Sajnos aNumber.isNaN csak a FireFox és a Chrome újabb verzióiban érhető el, és még nem támogatott az IE-ben vagy más nagyobb böngészőkben. Ez a jövőben életképes megközelítés lehet,de jelenleg csak nagyon szűk körülmények között használható.
talán ellenőrizhetjük a NaN “s típusát?
Igen, ezt helyesen olvasod., A JavaScript-ben a NaN érték numbertípusú. Ez nem lesz nagyon hasznos.
tehát mit tehetünk, hogy valamit, ami jól működik, de az is elérhető cross-browser? Ne feledje, hogyan említettem, hogy aNaN az egyetlen érték a JavaScriptben, amely nem egyenlő önmagával? Kihasználhatjuk ezt a tényt.
jelenleg a legjobb módja annak, hogy ellenőrizze, hogy egy érték NaN annak ellenőrzése, hogy nem egyenlő-e önmagával. Ha igen, akkor tudja, hogy NaN.,
természetesen ennek a technikának a használata nem különösebben olvasható, ezért gyakori, hogy egy közüzemi módszerbe csomagolják, amely világosabban kommunikál a szándékkal. Mind az aláhúzás, mind a lo-Dash megvalósításokat biztosít.
remélem, ez segített jobban megérteni a NaNfurcsaságait.
Köszönjük, hogy elolvasta!
Josh Clanton