Qué es el Scope
Tipos de Scope
Variables
var, let, const
Reasignación Redeclaración
https://www.youtube.com/watch?v=s-7C09ymzK8
Global → se puede llamar desde cualquier parte del código
🧐 Sin querer podríamos declarar una Variable global
Local → bloque - Function Scope - Block Scope
Funcion Scope / Block Scope (solo es un nombre según donde se encuentre) Bloque puede ser dentro de {} y función es igualmente un bloque y puede tener muchos bloques internos.
function saludo() {
let nombre = "Andres"
console.log(nombre)
}
saludo() // "Andres"
console.log(nombre) // ReferenceError: nombre is not defined
Declaración de variables: reservar un espacio en memoria para la variable en sí.
Re-declaración de variables: volver a declarar una variable previamente existente.
Asignación de variables: darle un valor a dicho espacio de memoria reservado.
Re-asignación de variables: darle un nuevo valor a una variable.
Una variable declarada con var
puede ser redeclarada y reasignada. Hoisting
var nombre // declaración (undefined) ✅
nombre = "Andres" // asignación ✅
nombre = "Valeria" // reasignación ✅
var nombre = "Oscar" // redeclaración y reasignación ✅
Una variable declarada con let
puede ser reasignada, pero no redeclarada. → scope bloque
let nombre // declaración (undefined) ✅
nombre = "Andres" // asignación ✅
nombre = "Valeria" // reasignación ✅
let nombre = "Oscar" // SyntaxError: Identifier 'nombre' has already been declared. ❌
Una variable declarada con const
no puede ser redeclarada, ni reasignada. Su declaración y asignación debe ser en una línea, caso contrario habrá un error. → scope bloque
// Con const
const nombre // SyntaxError: Missing initializer in const declaration. ❌
const nombre = "Andres" // declaración y asignación ✅
nombre = "Valeria" // TypeError: Assignment to constant variable. ❌
const nombre = "Oscar" // SyntaxError: Identifier 'nombre' has already been declared. ❌
const array = ["manzana", "pera"] // declaración y asignación ✅
array[0] = "piña" // Cambio de valor en un elemento del array
console.log(array) // [ 'piña', 'pera' ]
const array = [1,2,3] // SyntaxError: Identifier 'array' has already been declared. ❌
«const won’t create immutable variables, const will create immutable bindings»
<aside> 📌 SUMMARY: El scope es el alcance. Desde donde puedo acceder a una variable. Global vs Local Local: funcion () o bloque {} var → funcion. Puede ser redeclarada y reasignada let → bloque. Puede ser reasignada const → bloque. Ninguna de las dos. No crea inmutabilidad en caso de objetos y arrays. Les puedo cambiar la referencia en memoria. Como una flecha que le cambio para donde apunta.
</aside>