isNaN () (Svenska)

Eftersom de allra tidigaste versionerna av isNaN -specifikationen har dess beteende för icke-numeriska argument varit förvirrande. När argumentet till isNaN -funktionen inte är av typ Number, tvingas värdet först till ett tal. Det resulterande värdet testas sedan för att avgöra om det är NaN. Således för icke-nummer som när de tvingas till numerisk typ resulterar i ett giltigt icke-NaN-numeriskt värde (särskilt den tomma strängen och de booleska primitiverna, som när de tvingas ger numeriska värden noll eller ett), kan det ”falska” returnerade värdet vara oväntat; den tomma strängen, till exempel, är säkert ”inte ett nummer.” Förvirringen härrör från det faktum att termen ”inte ett tal” har en specifik betydelse för siffror som representeras som IEEE-754-värden för flytpunkt. Funktionen ska tolkas som att svara på frågan, ”är detta värde, när det tvingas till ett numeriskt värde, ett IEEE-754” Not A Number ”-värde?”

ECMAScript 2015 innehåller Number.isNaN() -funktion. Number.isNaN(x) är ett pålitligt sätt att testa om x är NaN. Även med Number.isNaN förblir emellertid innebörden av NaN den exakta numeriska betydelsen och inte ”inte ett tal”. I frånvaro av Number.isNaN är uttrycket (x != x) ett mer tillförlitligt sätt att testa om variabel x är NaN eller inte, eftersom resultatet inte är föremål för falska positiva effekter som gör isNaN opålitliga.

En polyfyllning för isNaN skulle vara (polyfill utnyttjar den unika egenskapen som aldrig är lika med sig själv för NaN):

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *