problema cu testarea pentru Nan în JavaScript

publicat inițial în a picurare de JavaScript newsletter.

În JavaScript, valoarea specială NaN (înseamnă „not a number”) este folosit pentru a reprezenta rezultatul unui calcul matematic, care nu poate fi reprezentat ca un număr semnificativ., De exemplu:

de asemenea, a alerga într NaN atunci când se utilizează parseInt sau parseFloat pentru a extrage un număr dintr-un șir, ca în acest exemplu:

Ca urmare, JavaScript dezvoltatorii de multe ori nevoie pentru a testa un rezultat variabilă pentru a vedea dacă acesta conține NaN sau dacă este o valoare semnificativ în loc. Există mai multe moduri diferite de a verifica dacă o valoare este NaN, dar, din păcate, majoritatea sunt nesigure., Să trecem prin unele dintre ele și să vedem cum eșuează.

lucrul logic de făcut este să verificați dacă rezultatul este egal cu NaN.

ce se întâmplă aici? În JavaScript, NaN are distincția de a fi singura valoare care nu este egală cu ea însăși. Asta înseamnă că putem”t a afla dacă o valoare este NaN prin verificarea egalității a NaN pentru că răspunsul va fi nu.

ce altceva am putea încerca? Ce zici de construit în isNaN funcția?,

minunat! Acesta pare să funcționeze. Și, de fapt, funcționează în anumite circumstanțe. Cu toate acestea, în ciuda numelui, scopul isNaN functia e”t pentru a verifica dacă o valoare este NaN. În schimb, scopul este de a verifica dacă o valoare nu poate fi constrânsă la un număr. Din acest motiv, se poate întoarce fals pozitive., Luați în considerare următoarele:

Dacă nu sunteți sigur că veți fi de-a face numai cu numere sau NaN, isNaN functia e”t destul de potrivit pentru acest scop.cu toate acestea, se dovedește că ECMAScript 6 creează o nouă funcție în scopul specific de a verifica dacă o valoare este NaN. Confuzie, această funcție este, de asemenea, numit isNaN, deși acesta este atașat la Number obiect, mai degrabă decât direct la obiect global., Poate fi folosit astfel:

excelent! Avem o metodă care chiar funcționează. Din păcate, Number.isNaN este disponibil numai în versiuni mai noi de FireFox și Chrome, și nu este încă acceptat în IE sau în alte browsere majore. Aceasta poate fi o abordare viabilă în viitor, dar pentru moment poate fi utilizată doar în circumstanțe foarte restrânse.

poate putem verifica NaN ” S tip în loc?

Da, citiți corect., În JavaScript, valoarea NaN este de tip number. Asta nu va fi de mare ajutor.deci ,ce putem face pentru a obține ceva care funcționează corect, dar este disponibil și cross-browser? Amintiți-vă cum am menționat că NaN este singura valoare din JavaScript care nu este egală cu ea însăși? Putem profita de acest fapt.în prezent, cel mai bun mod de a verifica dacă o valoare este NaN este să verificați dacă nu este egală cu ea însăși. Dacă da, atunci știți că este NaN.,desigur, utilizarea acestei tehnici nu este deosebit de lizibilă, deci este obișnuit să o înfășurați într-o metodă de utilitate care comunică intenția mai clar. Atât Underscore cât și Lo-Dash oferă implementări.sper că acest lucru a ajutat să obțineți o mai bună înțelegere pe quirks de NaN.

Vă mulțumim pentru lectură!mai multe detalii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *