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 NaN
a 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 number
tí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 NaN
furcsaságait.
Köszönjük, hogy elolvasta!
Josh Clanton