Funciones y Funciones Flecha (Arrow)
Aprende a estructurar código modular y reutilizable: declaración de funciones, parámetros con valores por defecto y funciones flecha modernas (() => {}).
¿Qué es una Función?
Una función es un bloque de instrucciones reutilizable diseñado para realizar una tarea específica. Recibe entradas (denominadas parámetros), procesa una lógica interna y opcionalmente devuelve un resultado mediante la instrucción return.
Evolución de Sintaxis: Clásica vs Funciones Flecha
| Tipo | Sintaxis | Características |
|---|---|---|
| Declaración Tradicional | function sumar(a, b) { return a + b; } |
Tiene su propio contexto de this y cuenta con elevación (hoisting completo). |
| Función Flecha (Arrow Function) | const sumar = (a, b) => a + b; |
Sintaxis más limpia y concisa. Si tiene una sola expresión, el return y las llaves {} son implícitos. Hereda el this léxico de su entorno exterior. |
Parámetros por Defecto (Default Parameters)
En ES6 puedes asignar valores predeterminados directamente en la lista de parámetros. Si el llamador no envía ese argumento, se utilizará el valor por defecto:
const saludar = (nombre = "Estudiante") => `¡Hola, ${nombre}!`;
console.log(saludar()); // "¡Hola, Estudiante!"
console.log(saludar("Carlos")); // "¡Hola, Carlos!"
⚡ Comparación de Funciones en Acción
Prueba una calculadora de descuentos programada con funciones flecha de retorno implícito:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Funciones Flecha en JS</title>
<style>
body { font-family: Arial, Helvetica, sans-serif; padding: 25px; background: #f8fafc; }
.card-fn { max-width: 480px; background: white; border: 1px solid #cbd5e1; border-radius: 8px; padding: 22px; }
input { width: 100%; box-sizing: border-box; padding: 8px 10px; margin: 6px 0 12px 0; border: 1px solid #cbd5e1; border-radius: 6px; }
.total-box { background: #f0fdf4; border: 1px solid #bbf7d0; color: #15803d; padding: 14px; border-radius: 6px; font-weight: bold; font-size: 1.1rem; }
</style>
</head>
<body>
<div class="card-fn">
<h3 style="margin-top: 0; color: #0f172a;">Calculadora con Arrow Functions</h3>
<label for="precio">Precio Original ($ USD):</label>
<input type="number" id="precio" value="100">
<label for="descuento">Porcentaje de Descuento (%):</label>
<input type="number" id="descuento" value="20">
<button onclick="calcular()" style="background: #0284c7; color: white; border: none; padding: 9px 16px; border-radius: 6px; cursor: pointer; font-weight: bold; width: 100%;">
Calcular con Función Flecha
</button>
<div id="resultado-calculo" style="margin-top: 15px;"></div>
<script>
// Función Flecha concisa con retorno implícito:
const calcularPrecioFinal = (precio, descPorcentaje = 0) =>
precio - (precio * (descPorcentaje / 100));
function calcular() {
const precio = Number(document.getElementById('precio').value);
const desc = Number(document.getElementById('descuento').value);
const total = calcularPrecioFinal(precio, desc);
document.getElementById('resultado-calculo').innerHTML = `
<div class="total-box">
Precio Final a Pagar: $${total.toFixed(2)} USD
</div>
`;
}
calcular();
</script>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de JavaScript ES6+ y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.