Funciones
Fundamentos sobre las Funciones
Una función es un bloque de código que definimos una vez y lo reutilizamos las veces que queramos; un conjunto de instrucciones a las que podemos pasar diferentes datos, luego estos datos se procesan y así la función nos devolverá resultados distintos según sea el resultado del procesamiento.
Las funciones son muy útiles a la hora de crear un código único para usarlo en distintas partes de nuestro programa. El beneficio de esto es que si en el futuro queremos modificar algo de ese código lo haremos en un único sitio aunque se utilice en decenas de sitios diferentes. Las funciones se ejecutan en distintos momentos y con distintas características gracias a los parámetros.
Otra de las ventajas de las funciones es que devuelven un valor, es decir, realizan una operación y pueden devolver un dato. Ese dato podemos asignárselo a una variable o usarlo dentro de otra operación. O incluso podemos prescindir de él si no nos interesa para nada.
Aquí hay un ejemplo de una función:
nombreFuncion() {
console.log("Hola Mundo");
}
Puedes llamar o invocar esta función usando su nombre seguido de paréntesis, así: nombreFuncion()
, cada vez que se llame a la función se imprimirá el mensaje Hola Mundo
en la consola. Todo el código entre las llaves se ejecutará cada vez que se llame a la función.
ECMAScript o ES
Antes de continuar con la explicación de las funciones queremos que sepas que es ECMAScript o ES, esto es una versión estandarizada de JavaScript. Dado que todos los principales navegadores siguen esta especificación, los términos ECMAScript y JavaScript son intercambiables. Al momento de escribir esta guía la última versión de ECMAScript es la 12, o sea ES12, JavaScript está en constante evolución, y últimamente cada año se lanzan nuevas características.
ES6, lanzado en 2015, añadió muchas características nuevas y potentes al lenguaje. Al rededor de estás guías vemos implementaciones de varias versiones de ECMAScript, como lo es el caso de esta guía, donde por ejemplo se explican las funciones anónimas (ES5) y se da la otra alternativa que son las funciones flecha (ES6). Si quieres más adelante ver otro tipo de caso como el mencionado anteriormente puedes visitar artículos como este.
Tipos de funciones
Función sin parámetros
Son funciones que no tienen parámetros, normalmente se realizan cuando no se necesitan argumentos para la que la función se realice o se utilizan valores externos a la función.
function nombreFuncion() {
//Accion
}
Función con parámetros
Los parámetros son variables que se introducen en una función cuando se llama. Cuando se define una función, normalmente se define junto con uno o más parámetros. Los valores reales que se introducen (o se "pasan") a una función cuando se la llama se conocen como argumentos. Cuando a una función le debemos enviar varios argumentos debemos de tener cuenta el orden de estos, ya que si los pasamos en diferente orden a como están definidos los parametros de la función posiblemente no tendremos el resultado esperado.
Esta es una función con dos parámetros, parametro1 y parametro2:
function funcionPrueba(parametro1, parametro2) {
console.log(parametro1, parametro2);
}
Entonces podemos llamar a funcionPrueba así: funcionPrueba("Hola", "Mundo")
. Hemos pasado dos argumentos de cadena, Hola y Mundo. Dentro de la función, param1 será igual a la cadena Hola y param2 será igual a la cadena Mundo. Ten en cuenta que podrías volver a llamar a funcionPrueba con argumentos diferentes y los parámetros tomarían el valor de los nuevos argumentos.
Función sin retorno
También llamadas procedimiento, son funciones que no retorna un valor, en muchos lenguajes de programación las podemos reconocer cuando no contiene la palabra return
.
En el ejemplo anterior, llamamos la función dentro del console.log así: console.log(calcularPromedio(35,10,9))
, esto quiere decir que se va a imprimir un mensaje en la consola con lo que retorne la función, en este caso retornará la cadena de caracteres 'El promedio es: 18', ya que (35+10+9)/3 es igual a 18 y luego se concatena con el string 'El promedio es: '. Si pusieramos console.log(num1,num2,num3)
debajo del return y antes de la llave de cierre de la función, este no se mostraría ya que en la anterior instrucción estamos retornando un valor utilizando return y ya estaríamos afuera de la función, es decir, la ejecución de la función actual se detiene y el control vuelve a la ubicación de llamada.
Función Anónima
Cuando una función se define sin un nombre, la podemos utilizar cuando no necesitamos llamar a la funcion en otra parte.
Forma común
const nombreFuncion = (param1,param2,paramN) => {
//Acción
//Acción
}
Si sólo necesitamos un parámetro en nuestra función podemos quitar los paréntesis
const nombreFuncion = parametro => {
//Accion1
//Accion2
}
Si el contenido de la función ocupa solo una línea de código no necesitamos poner return
y no tiene que estar entre llaves
const nombreFuncion = (param1,param2) => param1+param2
También podemos combinar las dos anteriores así:
const nombreFuncion = param1 => param1 * 2
Si quisieramos realizar una función flecha sin parámetos
const nombreFuncion = () => console.log('Hola mundo')
Reforcemos con un ejemplo de función flecha lo más simplificado posible:
Asignar la función a una variable
En el ejemplo anterior se puede evidenciar que la función calcularPromedio
la estamos guardando en la constante calcular
, luego al llamar la función lo podemos hacer utilizando calcular
o calcularPromedio
ya que son una copia exacta y harían lo mismo.
Scope
En JavaScript, el scope se refiere a la visibilidad de las variables.
Global
Las variables que se definen fuera de un bloque de funciones tienen alcance global. Esto significa que pueden verse en cualquier parte del código JavaScript. En la siguiente imagen hay una variable con alcance global llamada miVariableGlobal
, se puede acceder a ella desde cualquier parte del código, ya sea dentro de funciones o fuera de ellas
Tip: Cuando en el if
solo se debe de ejecutar una acción no es necesario poner las llaves, si es más de una si es obligatorio ponerlas.
Local
Las variables que se declaran dentro de una función, así como los parámetros de la función, tienen ámbito local. En la siguiente imagen dentro de la función obtenerVariableLocal
hay una variable con alcance local llamada miVariableLocal
, a esta variable no se puede acceder por fuera de la función.
La llamada a la función obtenerMiVariableLocal
mostrará la cadena 'Solo pueden acceder a mi dentro de la función obtenerMiVariableLocal' en la consola. Las líneas
miVariableLocal = "Hola, intento cambiarle el valor a la variable local"
y console.log(miVariableGlobal)
(fuera de la función obtenerMiVariableLocal) arrojaran un error, ya que miVariableLocal no está definida fuera de la función.
Global vs Local
Es posible tener variables locales y globales con el mismo nombre. Cuando se hace esto, la variable local tiene prioridad sobre la variable global.
Para elaborar el conténido anterior de funciones se utilizó apoyo del curso JavaScript Algorithms and Data Structures de freeCodeCamp