Apuntes sacados del curso de introducción a la programación, impartido por Universitas Telefónica (que realicé en Miríadax). Añadí algunos elementos para que no sea una copia exacta.

Los trocitos de código vistos anteriormente se ejecutan una vez, a excepción de las repeticiones de los bucles. En esta ocasión, veremos cómo invocar ciertas líneas (con instrucciones) en varios puntos del código. De esta forma, se evitar el tener que escribir lo mismo una y otra vez.

Funciones

Una función es un fragmento sencillo de código, también denominado módulo. Su finalidad es recoger unos parámetros de entrada (argumentos), realizar una serie de instrucciones y devolver un resultado. Para declarar una función se utiliza la palabra clave function seguida del nombre elegido, paréntesis (vacíos o con el número de argumentos que se quiera) y llaves (donde irá el cuerpo, las instrucciones).

function nombre_función(argumento1, argumento2, argumento3, ...) {
   instrucción 1;
   instrucción 2;
   ...
}

Importante: los argumentos no deben llevar la palabra clave var, o se producirá un Syntax Error.

Para llamar o invocar una función, se usa su nombre y, entre los paréntesis, el paso de parámetros. Además, el resultado suele guardarse en una variable (para un manejo posterior, más sencillo que volver a invocar la función con los mismos parámetros).

var nombre_variable = nombre_función(parámetro 1, parámetro2, parámetro2, ...);

Parámetros

Son los valores de entrada de la función; es decir, pueden ser datos de cualquier tipo (de los que hemos visto en otros módulos). Como consecuencia de no especificar el tipo (característica propia del JavaScript) al pasar parámetros a la función, se debe tener especial cuidado al definir las instrucciones en el cuerpo de la misma. Así nos aseguramos de la coherencia entre datos e instrucciones, evitando errores de tipo.

function puntua(mano) {
   var total = 0; //definimos esta variable para guardar la suma de los valores
   for (var i = 0; i < mano.length; i++) { //recorremos el array “mano”
      total = total + mano[i]; //los valores de cada elemento del array se van añadiendo a “total”
   }
   return total; //devuelve el valor guardado en la variable “total”
}

En este ejemplo, la función puntua consiste en pasar un array de números como parámetro y obtener la suma total de los valores. ¿Y qué pasaría si no le pasamos un array de números como parámetro? Pues que, el resultado obtenido, no sería lo que esperamos. Haz la prueba, pasándole un string como parámetro.

Para invocar o llamar a la función puntua, utilizaremos dos variables:

var mano = [2, 5, 6, 9]; //declaramos la variable “mano” como array de números
var resultado = puntua(mano); //asignamos el valor calculado a “resultado”, guardando dicho valor (22)

Con esto, podríamos embellecer un tanto la visualización:

var mano [2, 5, 6, 9];
var resultado = puntua(mano);
console.log(“El valor total de la mano es: ” + resultado);

Si no te interesa guardar el resultado, sino simplemente mostrarlo en la consola:

var otra_mano = [3, 4, 8];
puntua(otra_mano); //se mostrará 15 en la consola.

Una tercera forma, en una sola línea:

puntua([2, 6, 8]); //se mostrará 16 en la consola

Ámbito de las variables

Viene del término scope (en inglés). Se diferencian dos: el global, donde se definen variables globales (accesibles para todo el código); y el local, donde se definen variables locales (accesibles solamente en ese ámbito, como puede ser una función). Para aclararlo más: una variable definida dentro de una función (en el cuerpo de la misma, lo que va entre las llaves {}), sólo será accesible y utilizable en esa función.

var carta = “3t”; //variable global
function mostrarCarta(carta) {
   var carta = “2p”; //variable local
   console.log(“La carta mostrada es: ” + carta);
}
mostrarCarta(carta); //llamada a la función y el resultado es “2p”

Como se puede apreciar en el ejemplo, la variable local tiene prioridad sobre la global (no será utilizada por la función mostraCarta). Tiene cierta lógica, si vemos que, una variable definida dentro de una función, debe servir a esa función; y, una global, debe servir de forma general al código. Para hacer uso de una variable global dentro de la función mostrarCarta, se debería eliminar la variable local.

var carta = “2t”;
function mostrarCarta(miCarta) {
   console.log(“Mi carta es ” + miCarta);
}
mostrarCarta(carta); //el resultado es “2t”

En este otro ejemplo, al no definir una variable local (únicamente una pasada como argumento), el resultado al llamar a la función mostrarCarta está definido por la variable global. Además, si se pasase miCarta como parámetro en la llamada mostrarCarta(miCarta), se obtendría un Reference Error (miCarta funciona como variable local, por lo que solamente es accesible dentro de la función).

Programas

Un programa consiste en la ejecución de un número determinado de instrucciones, que forman un código, con la finalidad de realizar tareas concretas. La mejor forma de desarrollar y mantener un programa extenso, es construirlo a partir de módulos (funciones): el principio de divide y vencerás.

Al utilizar funciones para esto, se debe tener en cuenta que una será la principal (la que inicializará al resto).

function mostrarPuntuacion(puntuacion) {
   console.log(“La puntuación es ” + puntuacion); //muestra el resultado (40)
}
function programa() {
   var mano = [10, 9, 8, 7, 6]; //array de números
   var resultado = puntua(mano); //llamada a la función puntua
   mostrarPuntuacion(resultado); //llamada a la función mostrarPuntuacion con el parámetro “resultado”
}
programa(); //llamada a la función principal
 

Pin It en Pinterest