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 № 1Suspensó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