FullStackJS Camp
Módulo 3·practica·6h
Objetivos de aprendizaje
  • Comprender el scope de bloque, función y global.
  • Explicar qué es un closure y cuándo se usa.
  • Pasar funciones como argumento (callbacks).
  • Usar forEach, map, filter y reduce con funciones personalizadas.

Funciones en JavaScript (Parte II)

Scope (ámbito de variables)

El scope define dónde es visible una variable.

javascript
// Scope global
const global = "soy global";

function ejemplo() {
  // Scope de función
  const local = "soy local";
  console.log(global); // ✅ accesible
  console.log(local);  // ✅ accesible
}

console.log(global); // ✅
console.log(local);  // ❌ ReferenceError

// Scope de bloque (let y const)
if (true) {
  let bloqueada = "solo en el bloque";
  const tambien = "igual";
}
console.log(bloqueada); // ❌ ReferenceError

Closures

Un closure es una función que recuerda las variables de su scope exterior, incluso después de que esa función exterior haya terminado.

javascript
function crearContador() {
  let count = 0; // variable "encerrada"

  return function incrementar() {
    count++;
    return count;
  };
}

const contador = crearContador();
console.log(contador()); // 1
console.log(contador()); // 2
console.log(contador()); // 3

// Cada llamada a crearContador() crea su propio scope
const otroContador = crearContador();
console.log(otroContador()); // 1 (independiente)

Callbacks y funciones de orden superior

Una función de orden superior recibe o retorna otra función.

javascript
// forEach con callback
const numeros = [1, 2, 3, 4, 5];
numeros.forEach(function(n) {
  console.log(n * 2);
});

// Con arrow function (forma más común)
numeros.forEach(n => console.log(n * 2));

// Función personalizada como callback
function esPar(n) { return n % 2 === 0; }
const pares = numeros.filter(esPar);
// [2, 4]
Práctica interactiva · JavaScript