Onde o código a cima imprime 10 no console.log da variável a, e para evitar problemas, é importando usar var, let ou const.
Outra coisa interessante a olhar é o console.log da variável b, que em vez de dar ReferenceError, pela variável não ter sido declarada ainda, o js executa primeiro a instrução para criar a variável, e só depois executa o código da função, algo como:
E por esse motivo é impresso undefined nesse caso.
Ainda nesse assunto, existem as closures que trabalham com os escopos para criar variáveis que não podem mais ser sobrescritas, mesmo elas não sendo constantes.
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
Eu não posso dizer se consegui entender os conceitos por já conhece-los, mas está bem descrito.
Uma coisa a acrescentar é que é possível usar variáveis sem usar
var
,let
ouconst
, que nesse caso seriam criadas no escopo global, como:Onde o código a cima imprime 10 no
console.log
da variávela
, e para evitar problemas, é importando usarvar
,let
ouconst
.Outra coisa interessante a olhar é o
console.log
da variávelb
, que em vez de darReferenceError
, pela variável não ter sido declarada ainda, o js executa primeiro a instrução para criar a variável, e só depois executa o código da função, algo como:E por esse motivo é impresso
undefined
nesse caso.Ainda nesse assunto, existem as closures que trabalham com os escopos para criar variáveis que não podem mais ser sobrescritas, mesmo elas não sendo constantes.