Por que a declaração de variável JavaScript no console resulta em "Indefinido"
Ao declarar uma variável no console JavaScript usando a sintaxe var a;, imprime "indefinido". Esse comportamento pode ser surpreendente e geralmente é abordado em postagens do Stack Overflow. No entanto, essas discussões não conseguem explicar completamente por que isso ocorre.
O comportamento do console é um resultado direto da maneira como o JavaScript avalia as expressões. Ao avaliar a instrução var a;, o JavaScript a considera uma expressão por si só e retorna seu resultado, que é de fato "indefinido".
É mais intrigante porque o console também imprime "indefinido" ao declarar uma variável com um valor inicial, como var a = 3. Surpreendentemente, todas as instruções de declaração de variáveis em JavaScript (tanto var quanto function) retornam "indefinido" se houver outra instrução com um resultado "real".
Por exemplo :
> var a = 3; undefined > var a = 3; a = 4; 4 > var a = 3; a = 4; var a = 5; function f() {}; 4
Esse comportamento está enraizado na instrução eval, que, de acordo com a especificação ECMAScript:
A avaliação da instrução var a = 4 retorna (normal, vazio, vazio), o que satisfaz os critérios para retornar "indefinido".
No entanto, o eval também especifica que se o o valor de conclusão do programa avaliado não estiver vazio, então o valor da última instrução será retornado. No último exemplo, a = 4 é a última instrução, portanto seu valor (4) é retornado.
Em resumo, o console do JavaScript imprime "indefinido" para declarações de variáveis porque essas declarações retornam "indefinido" quando avaliadas como expressões. Esse comportamento pode ser confuso, principalmente ao atribuir valores iniciais a variáveis, mas decorre dos mecanismos de avaliação subjacentes de expressões e instruções JavaScript.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3