Skip to content

Armadilha em JavaScript

Que resultado se obtém ao executar o seguinte código em JavaScript:

var x;
x += 0;
alert(x);

Se você respondeu 0, enganou-se, a saída será NaN (not a number). O problema todo ocorre porque uma variável recém declarada contém o valor undefined, que somado a zero resulta em NaN.

Agora imagine o seguinte trecho de código:

var x;
for(i = 0; i < size; i++) {
x += stream[i];
}

Simplesmente o resultado era sempre NaN, já que NaN somado a um número qualquer sempre resulta em NaN.

A solução é inicializar sempre varíáveis numéricas em JavaScript, evitando esse tipo de problema:

var x = 0;
x += 0;
alert(x);

O código foi testado tanto em IE quanto no Firefox, onde ocorre sempre, já que não se trata de uma falha de implementação. O comportamento segue a especificação da linguagem, ainda que seja um comportamento inesperado.

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*