Skip to content

Lección 25: Funciones

Las funciones son bloques de código reutilizable que realizan una tarea específica. Son uno de los pilares de la programación. En JavaScript, las funciones son ciudadanos de primera clase, lo que significa que pueden asignarse a variables, pasarse como argumentos y devolverse desde otras funciones.

Function Declaration (Declaración de función)

Section titled “Function Declaration (Declaración de función)”

La forma más tradicional de definir una función.

function saludar(nombre) {
console.log(`Hola, ${nombre}!`);
}
saludar('Ana'); // "Hola, Ana!"

Partes de una función:

  • function — palabra clave
  • saludar — nombre de la función
  • (nombre) — parámetros (entradas)
  • { ... } — cuerpo de la función (código a ejecutar)

Function Expression (Expresión de función)

Section titled “Function Expression (Expresión de función)”

Asignas una función anónima a una variable.

const sumar = function(a, b) {
return a + b;
};
console.log(sumar(5, 3)); // 8

Los parámetros son las variables que definimos al crear la función. Los argumentos son los valores que pasamos al llamarla.

function multiplicar(a, b) { // a y b son parámetros
return a * b;
}
console.log(multiplicar(4, 5)); // 4 y 5 son argumentos → 20

return devuelve un valor desde la función. Sin return, la función devuelve undefined.

function suma(a, b) {
return a + b;
console.log('Esto nunca se ejecuta'); // código muerto
}
let resultado = suma(10, 20);
console.log(resultado); // 30

Las function declarations se elevan (hoisting) al inicio del archivo, por lo que puedes llamarlas antes de definirlas. Las function expressions NO tienen hoisting.

// ✅ Funciona por hoisting
console.log(restar(10, 3)); // 7
function restar(a, b) {
return a - b;
}
// ❌ No funciona
console.log(dividir(10, 2)); // TypeError: dividir is not a function
const dividir = function(a, b) {
return a / b;
};

Funciones como ciudadanos de primera clase

Section titled “Funciones como ciudadanos de primera clase”

En JavaScript, las funciones son valores como cualquier otro.

// Asignar función a variable
const miFuncion = function() {
console.log('Soy un valor');
};
// Pasar función como argumento (callback)
function ejecutarOperacion(a, b, operacion) {
return operacion(a, b);
}
function suma(a, b) { return a + b; }
function resta(a, b) { return a - b; }
console.log(ejecutarOperacion(10, 5, suma)); // 15
console.log(ejecutarOperacion(10, 5, resta)); // 5
// Devolver función desde otra función
function crearMultiplicador(factor) {
return function(numero) {
return numero * factor;
};
}
const duplicar = crearMultiplicador(2);
console.log(duplicar(7)); // 14
// Función que calcula el IMC
function calcularIMC(peso, altura) {
let imc = peso / (altura * altura);
return imc;
}
function clasificarIMC(imc) {
if (imc < 18.5) return 'Bajo peso';
if (imc < 25) return 'Normal';
if (imc < 30) return 'Sobrepeso';
return 'Obesidad';
}
// Uso
let peso = 70; // kg
let altura = 1.75; // metros
let imc = calcularIMC(peso, altura);
console.log(`Tu IMC es ${imc.toFixed(1)}: ${clasificarIMC(imc)}`);
// Función como callback
function procesarArray(arr, callback) {
let resultado = [];
for (let elemento of arr) {
resultado.push(callback(elemento));
}
return resultado;
}
let numeros = [1, 2, 3, 4, 5];
let cuadrados = procesarArray(numeros, function(n) {
return n * n;
});
console.log('Cuadrados:', cuadrados); // [1, 4, 9, 16, 25]
  1. Crea un archivo funciones.js.
  2. Escribe una function declaration esPar(n) que devuelva true si n es par.
  3. Escribe una function expression factorial(n) que calcule el factorial de un número.
  4. Escribe una función saludarPersona(nombre, edad) que use return y devuelva un saludo personalizado.
  5. Escribe una función aplicarOperacion(a, b, operacion) que reciba un callback y lo ejecute.
  6. Llama a la función esPar antes de declararla (para probar hoisting).
// Hoisting: funciona aunque esté declarada después
console.log('¿10 es par?', esPar(10));
console.log('¿7 es par?', esPar(7));
function esPar(n) {
return n % 2 === 0;
}
// Function expression
const factorial = function(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
};
console.log('Factorial de 5:', factorial(5)); // 120
// Función con return
function saludarPersona(nombre, edad) {
return `Hola, soy ${nombre} y tengo ${edad} años.`;
}
console.log(saludarPersona('María', 30));
// Función que recibe callback
function aplicarOperacion(a, b, operacion) {
return operacion(a, b);
}
const multiplicar = function(x, y) { return x * y; };
console.log('10 * 5 =', aplicarOperacion(10, 5, multiplicar));
console.log('10 + 5 =', aplicarOperacion(10, 5, function(x, y) { return x + y; }));

La diferencia clave entre declaración y expresión de función:

CaracterísticaFunction DeclarationFunction Expression
Hoisting✅ Sí❌ No
Sintaxisfunction nombre()const fn = function()
Se puede llamar antes✅ Sí❌ No

Usa function declaration para funciones principales. Usa function expression para asignar funciones a variables o pasarlas como argumentos.

En la próxima sección del curso veremos arrow functions (=>), una forma más moderna y concisa de escribir funciones:

// Arrow function (preview)
const suma = (a, b) => a + b;
const cuadrado = n => n * n;

Son las más usadas en JavaScript moderno, especialmente como callbacks. Pero primero domina las function declarations y expressions tradicionales.