Funciones
- En ECMAScript las funciones son un tipo de dato
- Las utilizamos para agrupar funcionalidad para utilizarlo todas las veces que necesite
- Utilizamos la palabra reservada function para declarar una función
- Para ejecutar una función primero la tengo que declarar
- Podemos ejecutar las funciones utilizando el nombre de la función y paréntesis
function saludar() {console.log('hola');}saludar(); // Muestra en consola holasaludar(); // Muestra en consola hola
En este ejemplo vemos que podemos definir una función con el nombre saludar y luego la utilizamos llamandola con el nombre y los paréntesis
Podemos utilizar una función tantas veces como lo necesitemos
Cuando vemos que estamos repitiendo código es un caso común donde podemos mejorarlo y separar ese código en una función
También el uso de funciones nos hace más fácil testear nuestro código
Dado que las funciones en ECMASCript son un tipo de dato lo podemos asignar a una variable
Al asignar una función a una variable no necesitamos darle un nombre ya que para eso podemos utilizar la variable
Las funciones que no tienen nombre se denominan anónimas
// Al asignar una función a una variable no hace falta ponerle nombre a la funciónlet saludar = function() {console.log('hola');}saludar(); // Muestra en consola holasaludar(); // Muestra en consola hola
- En este ejemplo declaramos la variable saludar y le asignamos un tipo de dato function
- La asignación funciona de la misma forma que si fuera cualquier otro tipo de dato (string, number, boolean y ahora function)
- Una función puede o no retornar un valor
- Cuando una función no retorna un valor obtenemos undefined como se ve al ejecutar
console.log()
en la consola - Para retornar un valor utilizamos la palabra reservada return dentro de la función
function obtenerSaludo() {return 'hola'}// obtenerSaludo retorna un tipo de dato string y lo podemos mostrar en console.log()console.log(obtenerSaludo());// Podemos guardar el valor retornado de una función en una variable y luego utilizarlolet saludo = obtenerSaludo();console.log(saludo)
- Una función puede retornar cualquier tipo de dato
function conseguirLaEdadDelUsuario() {return 30;}function usuarioLoggeado() {return true;}
- Dado que las funciones retornan un valor podemos utilizar estos valores en los condicionales de ser necesarios
function conseguirLaEdadDelUsuario() {return 30;}function usuarioLoggeado() {return true;}if (conseguirLaEdadDelUsuario() >= 18) {console.log('El usuario es mayor de 18')}if (usuarioLoggeado()) {console.log('Bienvenido usuario a nuestro sitio');}
- En el primer caso la función retorna un valor numérico por lo cual podemos compararlo y obtener un resultado booleand true/false según el valor retornado por la función
- En el segundo caso una función puede retornar un valor boolean directamente y lo podemos utilizar como condición. Si el usuario está loggeado podemos saludarlo
- Las funciones también aceptan uno o varios valores como parametros
- Utilizando parametros hacemos que nuestras funciones sean más flexibles y le podemos dar más funcionalidades
- Al declarar una función podemos establecer la cantidad de parámetros que acepta esa función y ponerles un nombre a cada uno
- También podemos poner un nombre a cada parámetro para que tenga más contexto dentro de la función
- Dentro de la función podemos interactuar con los parámetros
function(parametro1, parametro2, parametro3) {console.log(parametro1, parametro2, parametro3)}
- Por ejemplo podemos utilizar los parámetros de la siguiente forma
function saludar(nombrePersona) {console.log('¡Hola ' + nombrePersona + '!');}saludar('Ada'); // Muestra en consola: ¡Hola Ada!saludar('Grace'); // Muestra en consola: ¡Hola Grace!saludar('Hedy'); // Muestra en consola: ¡Hola Hedy!
- En este ejemplo vemos varias cosas
- Declaramos una función saludar
- La función saludar espera un parámetro que le pusimos el nombre de nombrePersona
- nombrePersona en la función no es más que una variable que va a tomar un valor según lo que le pasen como parámetro a la función
- Al ejecutar la función
saludar('Ada')
estamos pasando 'Ada' como parámetro - Dentro de la función nombrePersona tiene asignado el nombre que le pasaron, ejemplo en el primer llamado tiene 'Ada', en el segundo 'Grace' y en el tercero 'Hedy'
- Podemos cambiar los valores que le pasamos como parámetros a una función y eso es lo que le da tanta felxibilidad a las funciones
let saludar = function(nombrePersona) {console.log('¡Hola ' + nombrePersona + '!');}saludar('Ada'); // Muestra en consola: ¡Hola Ada!saludar('Grace'); // Muestra en consola: ¡Hola Grace!saludar('Hedy'); // Muestra en consola: ¡Hola Hedy!
- También podemos utilizar una variable para asignarle la función con el parámetro esperado y obtener el mismo resultado
- Otra forma similar de hacer esto es utilizando el valor de retorno
let saludo = function(nombreDelUsuario) {return '¡Hola ' + nombreDelUsuario + '!';}console.log( saludo('Ada') ); // Muestra en consola: ¡Hola Ada!console.log( saludo('Grace') ); // Muestra en consola: ¡Hola Grace!console.log( saludo('Hedy') ); // Muestra en consola: ¡Hola Hedy!
- Este ejemplo es un poco más difícil de ver pero funciona de forma similar a la anterior
- En este caso declaramos la función y la asignamos a la variable saludo
- Ahora podemos pasar un nombre a saludo() y obtener un string como respuesta
- Al valor retornado por la función saludo lo mostramos en consola
- Una función puede aceptar más de un parámetro
- Es importante el orden en que ponemos los parámetros para utilizar una función
let saludar = function(nombreDelUsuario, edad) {console.log('¡El usuario ' + nombreDelUsuario + ' tiene años' + edad + '!');}saludar('Ada', 27); // ¡El usuario Ada tiene 27 años!saludar(35, 'Grace'); // ¡El usuario 35 tiene Grace años!
- En el primer llamado la función espera el nombre como primer parámetro y la edad como segundo por lo cual como se le pasaron los parámetros correctamente puede mostrar el mensaje bien
- En el segundo llamado se utilizan mal los parámetros por lo cual se muestra mal el mensaje