Hola, estoy dándole caña al tema de let y const para declarar variables locales y constantes. Ya más o menos me defiendo pero con alguna dudilla todavía.
En el ejemplo que pongo a continuación que saque de un ejemplo explicativo la ultima variable (var MY_FAV = 20;) da un error en la consola y la explicación que pone es porque este se alza en el contexto global. No comprendo que quiere decir, a mi entender la contante MY_FAV = 20 que es local no chocaría con var MY_FAV = 20; que es global y no debería dar un error: SyntaxError: tratando de redeclarar una constante. El identificador 'MY_FAV' ya ha sido declarado.
<script>
// definimos MY_FAV como constante y le damos un valor de 7
const MY_FAV = 7;
// es importante tener en cuenta como funciona el alcance de bloque
if (MY_FAV === 7) {
// esto esta bien y crea una variable MY_FAV de alcance/ambito de bloque
// (funciona igual de bien con let para declarar un alcance de bloque /ambito de variable no-constante)
const MY_FAV = 20;
// MY_FAV ahora es 20
console.log('my favorite number is ' + MY_FAV);
// este se alza en el contexto global y lanza un error
var MY_FAV = 20;
}
// MY_FAV todavia es 7
console.log('my favorite number is ' + MY_FAV);
</script>
En el ejemplo que pongo a continuación que saque de un ejemplo explicativo la ultima variable (var MY_FAV = 20;) da un error en la consola y la explicación que pone es porque este se alza en el contexto global. No comprendo que quiere decir, a mi entender la contante MY_FAV = 20 que es local no chocaría con var MY_FAV = 20; que es global y no debería dar un error: SyntaxError: tratando de redeclarar una constante. El identificador 'MY_FAV' ya ha sido declarado.
<script>
// definimos MY_FAV como constante y le damos un valor de 7
const MY_FAV = 7;
// es importante tener en cuenta como funciona el alcance de bloque
if (MY_FAV === 7) {
// esto esta bien y crea una variable MY_FAV de alcance/ambito de bloque
// (funciona igual de bien con let para declarar un alcance de bloque /ambito de variable no-constante)
const MY_FAV = 20;
// MY_FAV ahora es 20
console.log('my favorite number is ' + MY_FAV);
// este se alza en el contexto global y lanza un error
var MY_FAV = 20;
}
// MY_FAV todavia es 7
console.log('my favorite number is ' + MY_FAV);
</script>