Lección 11 · 11 de 20
Funciones y funciones flecha · JavaScript
Reutilice código con funciones en JavaScript: declaraciones con function, valores con return, funciones flecha y funciones como valores.

Una función es un bloque de código con nombre que se puede usar tantas veces como haga falta. function greet(name) declara una que recibe un parámetro, name, y se llama escribiendo su nombre con el valor entre paréntesis: greet("Laura").
Con `return` la función devuelve un resultado a quien la llama. celsiusToFahrenheit(20) vale 68, y ese valor se puede escribir, guardar en una variable o usar en otra cuenta.
Las funciones flecha son una forma más corta: const double = (n) => n * 2. Si el cuerpo es una sola expresión, se devuelve sin escribir return; si tiene varias líneas, como shippingCost, necesita llaves y return.
En JavaScript las funciones son valores como cualquier otro: se guardan en constantes y se pasan a otras funciones. applyTwice(double, 5) recibe double y la aplica dos veces: 5, 10, 20. Esta idea es la base de las lecciones siguientes y de los componentes de React, que en DMarlon Studio usan los destinos React, Next.js y React Native.
Una declaración con function se puede llamar antes de la línea en la que aparece, como square(9); una función flecha guardada en const, no.
Código · main.js
// A function declaration: a named block of code you can reuse.function greet(name) { console.log(`Hello, ${name}! Welcome to the shop.`);}greet("Laura");greet("Pedro");// A function can calculate a value and return it.function celsiusToFahrenheit(celsius) { return celsius * 9 / 5 + 32;}console.log("20 C =", celsiusToFahrenheit(20), "F");console.log("-5 C =", celsiusToFahrenheit(-5), "F");// Arrow functions: a shorter way to write a function.const double = (n) => n * 2;const isEven = (n) => n % 2 === 0;console.log("double(21):", double(21), "| isEven(7):", isEven(7));// With several lines, an arrow function needs { } and return.const shippingCost = (total) => { if (total >= 50) return 0; return 4.95;};console.log("Shipping for 30 euros:", shippingCost(30));console.log("Shipping for 75 euros:", shippingCost(75));// Functions are values: you can pass them to other functions.const applyTwice = (fn, value) => fn(fn(value));console.log("applyTwice(double, 5):", applyTwice(double, 5));// Declarations can be called before they appear in the file.console.log("square(9):", square(9));function square(n) { return n * n; }Salida · node main.js
Hello, Laura! Welcome to the shop. Hello, Pedro! Welcome to the shop. 20 C = 68 F -5 C = 23 F double(21): 42 | isEven(7): false Shipping for 30 euros: 4.95 Shipping for 75 euros: 0 applyTwice(double, 5): 20 square(9): 81
Para recordar
function nombre(parámetros) { ... }declara una función.returndevuelve un valor y termina la función.(x) => x * 2es una función flecha que devuelvex * 2.- Las funciones son valores: se guardan y se pasan a otras funciones.
Ejercicio
Escriba una función flecha vatPrice que sume el 21 % de IVA a un precio y otra isAdult que diga si una edad llega a 18, y pruébelas con tres valores cada una.