O NaN é um resultado de uma operação ou de uma função que não conseguiu retornar um número real válido. Exemplo:
var a = parseInt("aaaa");
var b = 0/0;
Null é quando o valor de uma variável esta setada como vazia:
var c = null;
O undefined é quando uma variável não tem um valor definido ou uma variável não esta definida:
var d;
alert(typeof(e));
Utilizando o operador de comparação:
a = parseInt("aaaa") ou b = 0/0
a == Number.NaN -> false (????)
a === Number.NaN -> false (????)
a == a -> false (????)
a === a -> false (????)
isNaN(a) -> true
As demais comparações serão false, pois a variável "a" possui um valor.
a == Number.NaN -> false (????)
a === Number.NaN -> false (????)
a == a -> false (????)
a === a -> false (????)
isNaN(a) -> true
As demais comparações serão false, pois a variável "a" possui um valor.
c = null
c == null -> true
c === null -> true
c == undefined -> true
c === undefined -> false
c == null -> true
c === null -> true
c == undefined -> true
c === undefined -> false
d = undefined
d == null -> true
d === null -> false
d == undefined -> true
d === undefined -> true
d == null -> true
d === null -> false
d == undefined -> true
d === undefined -> true
Variável "e" não definido
typeof(e) == "undefined" -> true
typeof(e) === "undefined" -> true
As demais comparações serão false, pois o typeof retorna string.
typeof(e) == "undefined" -> true
typeof(e) === "undefined" -> true
As demais comparações serão false, pois o typeof retorna string.
Os testes foram feitos no Firefox 3.6 (portanto, não sei se os valores retornados em outros navegadores serão os mesmos).
5 comentários:
valeu mesmo :) ficou bem claro hehehe
Acho que só em JS uma variável pode ser diferente dela mesma. hehehe...
Por isso que eu gosto dessa linguagem.
Usando o Chrome pra testar as comparações do primeiro quadro com a página do blog carregada eu percebi que as variáveis a, b e c já estão definidas! Talvez por isso que a comparação Number.NaN == a tenha retornado false. Testando com d a comparação não retorna valor mas gera um erro: ReferenceError: d is not defined. typeof(d) retorna o esperado "undefined".
Bem explicado.
As comparações mais engraçadas, na minha opnião são que NaN não é igual a nada, e isso inclue ele mesmo ele mesmo, sendo NaN == NaN => false.
E o mais estranho é que typeof NaN retorna "number". Ambos sendo definições do ECMAScript.
JS = demônio de tasmânia(grade pequena coisa).
Interessante este post.
Lembrei de C# e o comando
var a = null;
Postar um comentário