/ / JavaScript variável local está substituindo a variável global? - javascript, escopo, variáveis ​​globais, variáveis ​​locais

Variável local Javascript está substituindo a variável global? - javascript, escopo, variáveis ​​globais, variáveis ​​locais

var x = 3;

if(1==1){
if(2==2){
var x= 5;
}
}

document.write(x); // outputs 5

Então, eu estava executando alguns testes para entender melhor o conceito de escopo local e global. Pensei em declarar x com palavra chave var cria uma variável local e ignora qualquer variável com o mesmo nome no escopo pai. Por ignorar, eu quero dizer como eu posso mudar a variável x sem afetar a mesma variável no escopo acima dela. Mas, aparentemente, minha compreensão da definição das variáveis ​​js está errada. poderia por favor explicar porque se comporta assim?

Respostas:

0 para resposta № 1

Suspensórios Encaracolados ({...}) não cria espaço para var em JavaScript. Então, quando você declara alguma variável (x) com o mesmo nome (x) dentro {...} ele não cria nenhuma variável nova, mas na verdade substitui a variável declarada anteriormente.


3 para resposta № 2

var declara uma variável local dentro de uma função. Para variáveis ​​locais de escopo de bloco, use let.

var x = 3;
if(1==1){
if(2==2){
let x = 5;
}
}
console.log(x); // prints 3