isNaN () (Suomi)

Funktion isNaN varhaisimmista versioista lähtien sen käyttäytyminen ei-numeeristen argumenttien suhteen on ollut hämmentävää. Kun isNaN -funktion argumentti ei ole tyyppiä Numero, arvo pakotetaan ensin Numeroksi. Tuloksena oleva arvo testataan sitten sen selvittämiseksi, onko se NaN. Siten muille kuin numeroille, jotka pakotetaan numeeriseen tyyppiin, tuloksena on kelvollinen ei-NaN-lukuarvo (erityisesti tyhjä merkkijono ja loogiset primitiivit, jotka pakotettuna antavat numeeriset arvot nollan tai yhden), ”väärä” palautettu arvo voi olla odottamaton; esimerkiksi tyhjä merkkijono ei varmasti ”ole numero”. Hämmennys johtuu siitä, että termillä ”ei numero” on erityinen merkitys numeroille, jotka esitetään IEEE-754-liukulukuarvoina. Funktion tulisi tulkita vastaavan kysymykseen: ”Onko tämä arvo, kun se pakotetaan numeeriseksi arvoksi, IEEE-754” Ei numero ”-arvo?”

ECMAScript 2015 sisältää Number.isNaN() -toiminto. Number.isNaN(x) on luotettava tapa testata, onko x NaN vai ei. Jopa Number.isNaN -kohdassa NaN -merkityksen merkitys on kuitenkin edelleen tarkka numeerinen merkitys eikä ”ei luku”. Vaihtoehtoisesti ilmaisun Number.isNaN puuttuessa lauseke (x != x) on luotettavampi tapa testata, onko muuttuja x on NaN vai ei, koska tulokseen ei liity vääriä positiivisia tuloksia, jotka tekevät isNaN epäluotettavaksi.

Polyfill-täyttö kohteelle isNaN olisi (polyfill-täyttö hyödyntää NaN -ominaisuuden ainutlaatuista koskaan yhteneväisyyttä):

Write a Comment

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