isNaN ()

Sinds de allereerste versies van de isNaN functiespecificatie, is het gedrag voor niet-numerieke argumenten verwarrend. Als het argument voor de functie isNaN niet van het type Getal is, wordt de waarde eerst omgezet in een getal. De resulterende waarde wordt vervolgens getest om te bepalen of het NaN is. Dus voor niet-getallen die, wanneer ze worden afgedwongen naar numeriek type, resulteren in een geldige niet-NaN numerieke waarde (met name de lege string en booleaanse primitieven, die wanneer ze worden afgedwongen numerieke waarden nul of één geven), kan de “false” geretourneerde waarde onverwacht zijn; de lege string is bijvoorbeeld zeker “geen getal”. De verwarring komt voort uit het feit dat de term “geen getal” een specifieke betekenis heeft voor getallen die worden weergegeven als IEEE-754 drijvende-kommawaarden. De functie moet worden geïnterpreteerd als het beantwoorden van de vraag “is deze waarde, wanneer deze wordt afgedwongen tot een numerieke waarde, een IEEE-754” Not A Number “-waarde?”

ECMAScript 2015 bevat de Number.isNaN() functie. Number.isNaN(x) is een betrouwbare manier om te testen of x NaN is of niet. Zelfs met Number.isNaN blijft de betekenis van NaN de exacte numerieke betekenis en niet “geen getal”. Als alternatief, in de afwezigheid van Number.isNaN, is de uitdrukking (x != x) een betrouwbaardere manier om te testen of variabele x is NaN of niet, aangezien het resultaat niet onderhevig is aan de valse positieven die isNaN onbetrouwbaar maken.

Een polyfill voor isNaN zou zijn (de polyfill maakt gebruik van de unieke eigenschap die nooit gelijk is aan zichzelf van NaN):

Write a Comment

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *