Funciones

Una función es un conjunto de instrucciones agrupadas.

Anatomía de las funciones

La mayoría de las funciones tiene cuatro partes que son: nombre, parámetros, código y valores de regreso.

Nombre: La manera de nombrar funciones (que vamos a utilizar) es la misma que para nombrar variables.

Parámetros o Valores de entrada: Valores que se van a utilizar en la función pero que se van a obtener desde afuera de ella.

Código: Lineas de código que queremos que haga la función.
Las líneas de código pueden incluir variables *, operadores ramificaciones, ciclos, funciones, objetos.

Regreso o Valores de salida: Después de que se realicen las lineas de código podemos regresar valores. Para que sean utilizados dentro del programa.

Si son muchos valores, después de la palabra return los agrupamos en un arreglo.

* Las variables declaradas dentro de una función, únicamente pueden ser utilizadas dentro de la funcion.

// Anatomía de una función
 
function nombre(parametro1, parametro2, parametro3) {
    var valor
    valor = 0
    valor = parametro1 + parametro2 + parametro3
    return valor
  }
  
  // 1. nombre: Nombre de la función
  // 2. parametro1, parametro2, parametro3: Parámetros - Valores que no conocemos
  // pero que se van a utilizar en la función. 
  // 3. return: Al terminar de ejecutar el bloque de código queremos
  // que la función regrese un valor. El valor que va a regresar
  // una función se establece después de la palabra return.
  // 4. Todas las líneas dentro de las llaves hacen el código 
  // de la función

Todas las partes de las funciones son opcionales.

Funciones anónimas
Si la función no tiene nombre se le conoce como función anónima.
Las funciones anónimas tienen distintos usos, el primer uso es asignar la función como el valor de una variable.

Otro uso es para que se ejecute el código de la función inmediatamente después de que se evalúe. Este tipo de funciones se conocen como: Función Anónima Autoejecutable (Self-Executing Anonymous Function) o Expresión de Función Inmediatamente Invocada (Immediately Invoked Function Expression)

Por último si se utilizan librerías como jQuery las funciones anónimas se utilizan para

// Funciones anónimas

// Asignar el valor de la función a una variable
var test = function () {
console.log("Esta función no tiene nombre")
}

// Función Anónima Autoejecutable - 
// Self-Executing Anonymous Function
// Expresión de Función Inmediatamente Invocada - 
// Immediately Invoked Function Expression.

;(function (msg) {
  console.log("El código de esta función se va a ejecutar inmediatamente. " + msg)
}("test"))

// Función anónima en jQuery - 
// se necesita incluir jQuery antes de esta función. 

$('body').click(function() {
  console.log("Es una función anónima")
})    

Hay funciones que no necesitan valores externos para procesar, no necesitan parámetros.
Sería raro tener una función sin código para realizar pero es posible (JavaScript no envía ningún error).
Todas las funciones regresan un valor, cuando no se declara específicamente con la palabra return seguida del valor, el valor que se devuelve es undefined (no definido).

/* Otros ejemplos de funciones  */

function sin_parametros() {
console.log("No necesito parámetros")
}

function sin_regreso() {
console.log("No necesito parámetros y no devuelvo ningún valor")
}

function sin_codigo() {
// Esta función no tiene código
// no hace nada pero no marca error
}

sin_parametros()
sin_regreso()
sin_codigo()