isNaN () (Português)

Desde as primeiras versões da especificação de função isNaN, seu comportamento para argumentos não numéricos tem sido confuso. Quando o argumento para a função isNaN não é do tipo Número, o valor é primeiro forçado a um Número. O valor resultante é então testado para determinar se é NaN. Portanto, para não-números que quando coagidos para tipo numérico resultam em um valor numérico não NaN válido (notavelmente a string vazia e primitivos booleanos, que quando coagidos fornecem valores numéricos zero ou um), o valor “falso” retornado pode ser inesperado; a string vazia, por exemplo, certamente “não é um número”. A confusão origina-se do fato de que o termo, “não um número”, tem um significado específico para números representados como valores de ponto flutuante IEEE-754. A função deve ser interpretada como uma resposta à pergunta, “este valor, quando forçado a um valor numérico, é um valor IEEE-754” Não é um número “?”

ECMAScript 2015 contém o Number.isNaN(). Number.isNaN(x) é uma maneira confiável de testar se x é NaN ou não. Mesmo com Number.isNaN, no entanto, o significado de NaN permanece o significado numérico preciso e não, “não é um número”. Como alternativa, na ausência de Number.isNaN, a expressão (x != x) é uma maneira mais confiável de testar se a variável x é NaN ou não, pois o resultado não está sujeito aos falsos positivos que tornam isNaN não confiável.

Um polyfill para isNaN seria (o polyfill aproveita a característica nunca igual a si mesmo de NaN):

Write a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *