declaração de variável em JavaScript
var pi = 3.14159;
var diametro = raio * 2;
var raio = 10;
Teoricamente o resultado de diametro deveria ser 20, certo?
mas o problema é que no console é tido como "NaN".
Oque eu posso ter feito nessa situação?
var pi = 3.14159;
var diametro = raio * 2;
var raio = 10;
Teoricamente o resultado de diametro deveria ser 20, certo?
mas o problema é que no console é tido como "NaN".
Oque eu posso ter feito nessa situação?
Declare raio antes de declarar diâmetro.
Acredito que você deveria ter definido a variável raio
antes da variável diametro
. Eu fiz assim e aqui deu tudo certo.
Quer dizer que o JS segue uma ordem? Preciso necessáriamente de ter definido a variável antes para que meu código o reconheça?
Sim, a variável não vai ser identificada se ela não foi declarada ainda.
JavaScript é uma linguagem interpretada — o código é executado de cima para baixo e o resultado da execução do código é imediatamente retornado.
no momento que vc declara diametro atribuindo a ela o valor de raio, o js naquele momento ainda nao conhece o valor do raio pois ele eh declarado so a seguir. por isso precisa declarar a var raio antes
Para variaveis essa regra se aplica na maioria das linguagens acredito.
No JS em especifico você pode declarar funções abaixo e ele conseguira encontrar em tempo de execução, diferente de C por exemplo.
Mas no seu exemplo das variáveis, como a variável raio está declarada depois da variável diâmetro, o valor dela sera undefined (no momento do calculo)
var pi = 3.14159;
var raio = 10;
var diametro = raio * 2;
Tente assim e deve funcionar.
Apenas um adendo:
Javascript é essencialmente uma linguagem imperativa, isso significa que os comandos (statements
) serão avaliados na ordem que foram escritos.
Para declaração de funções a coisa muda de figura pois a linguagem possui hoisting
. Na prática, isso faz com que uma chamada a uma função possa ocorrer antes da declaração.
Por exemplo, o trecho de código a seguir funciona.
hello();
function hello() {
console.log("Hello!");
}
Veja mais em https://developer.mozilla.org/en-US/docs/Glossary/Hoisting.