El scope local de bloque es el entorno donde las variables locales únicamente pueden ser accedidas desde un bloque de código del programa.

<aside> 💡 Un bloque de código es todo aquello que está dentro de los caracteres de llaves {}.

</aside>


Hoisting en variables

Para hablar del scope de bloque, realizaré una breve explicacion de Hoisting. Hablaré un más de esto en su clase respectiva.

Hoisting es un término para describir que la declaración de variables y funciones son desplazadas a la parte superior del scope más cercano.

Mira el siguiente código y piensa cuál sería el resultado del console.log.

console.log(nombre);
var nombre = "Andres";

<aside> 💡 La respuesta es undefined, porque al hacer referencia a una variable que aún no está declarada, JavaScript crea esta variable y le asigna un valor de undefined.

</aside>

var nombre = undefined;
console.log(nombre);
nombre = "Andres";

<aside> 💡 De aquí el término de Hoisting, porque eleva la declaración. Pero esto solamente es cómo JavaScript interpreta el código, realmente las declaraciones siguen en el mismo lugar.

</aside>

console.log(nombre); //undefined
var nombre = "Andres";

Este efecto solo ocurre con var, si ejecutamos el mismo código con let o const, mostrará un error de referencia.

console.log(nombre)
let nombre = "Andres"
//ReferenceError: nombre is not defined

¿Por qué “var” no tiene scope de bloque?

<aside> 💡 En el scope de bloque, sí importa que las variables sean declaradas con varlet o const. Ya que var no tiene un scope de bloque. ¿Esto qué quiere decir?

</aside>