Ir directamente al contenido de esta página

codexexempla.org

Funciones

Tabla de contenidos

  1. Introducción
  2. Sintaxis general de una función
  3. Funciones y argumentos
  4. Variables y su ámbito
  5. return

Introducción

Una función no es más que un bloque de enunciados que componen un comportamiento que puede ser invocado las veces que sea necesario.

Sintaxis general de una función

Una función de JavaScript presenta este aspecto:


    function nombre_de_la_función(){
        …enunciados a ejecutar…
    }
            

Para ejecutar la función posteriormente no hay más que invocar su nombre en cualquier momento y desde cualquier parte de un código, con una excepción: la función debe haber sido definida anteriormente. Así, por ejemplo, este código:


    function dame_una_a(){
        alert("¡AAAAAAAAAAAAAAAAA!");
    }
            
    dame_una_a();
            

ejecutaría la alerta, pero éste:


    dame_una_a();
                
    function dame_una_a(){
        alert("¡AAAAAAAAAAAAAAAAA!");
    }
            

generaría un error, porque en el momento en que se invoca la función ésta aún no ha sido registrada.

Hay que poner especial atención a la hora de crear la funciones, para no repetir los nombres, principalmente porque esto no genera errores en JavaScript, y puede suponer quebraderos de cabeza cuando un script no funciona pero la consola de errores no muestra mensaje alguno.

Si definimos dos funciones con el mismo nombre, como en este ejemplo:


    function alerta(){
        alert("Ia Ia Shub-Niggurath");
    }
    
    function alerta(){
        alert("Klaatu barada nikto");
    }
    
    alerta();
            

sólo funciona la segunda, que ha sido la última definida.

Funciones y argumentos

Podemos desear que una función ejecute unos enunciados en los que opere con una serie de valores que no hayamos definido dentro de la misma, sino que los reciba de otra función o enunciado. Esos valores son los argumentos, que se especifican entre los paréntesis que van tras el nombre de la función, y se separan por comas:


    function nombre_de_la_función(argumento1,argumento1,…){
        …enunciados a ejecutar…
    }
            

Los argumentos se nombran como las variables:


    function sumar(x,y){
        var total = x + y;
        alert(total);
    }
            

Si después se ejecuta unas líneas como las siguientes:


    sumar(1,2);
    sumar(3,5);
    sumar(8,13);
            

en la función sumar total adquiere sucesivamente los valores de 3, 8 y 21, que es lo que mostrarían tres alertas.

Aunque en los ejemplos emplee numerales, como argumentos se puede enviar cualquier variable. Sólo hay que recordar que si se trata de una cadena literal, debe ir entrecomillada:


    la_función('cadena','otra_cadena');
                

Por último, sobre los argumentos hay que recordar las respuestas a tres preguntas:

Variables y su ámbito

El ámbito sería algo así como el espacio en el que las variables existen y al que pueden acceder enunciados u otras funciones. Si se define una variable dentro de una función, esa variable sólo existe para esa función, y otras funciones no pueden acceder a su valor a menos que lo reciban como un argumento:


    function concatenar_cadenas(){
        var a = "orda";
        var b = "lía";
        var c = a + b;
    }
    
    function mostrar_resultado(){
        alert(c);
    }
    
    concatenar_cadenas();
    mostrar_resultado();
            

En este caso no obtenemos una alerta con «ordalía», sino un error, puesto que en la función mostrar_resultado() pedimos que se muestre el valor de una variable que no existe en su ámbito. Dicho de otra manera, las variables existen sólo para concatenar_cadenas(), y aunque adquieren los valores definidos en cuanto ejecutamos la función, ésta es una «barrera» que impide que se pueda acceder a aquellos desde fuera.

Para que el código funionase, deberíamos definir las variables fuera de ambas funciones, para que su ámbito sea global:


    var a = "";
    var b = "";
    var c = "";
    
    function concatenar_cadenas(){
        a = "orda";
        b = "lía";
        c = a + b;
    }
    
    function mostrar_resultado(){
        alert(c);
    }
    
    concatenar_cadenas();
    mostrar_resultado();
            

De esta forma, toda función puede acceder a las variables. concatenar_cadenas() modifica los valores iniciales, pero ahora estos se almacenan de manera global fuera de ella; así están disponibles para mostrar_resultado().

return

Hay otra opción con la que solucionar el problema anterior, y que además puede ser útil en otras ocasiones: return que permite devolver valores al origen de la invocación de una función. El esquema de funcionamiento es algo así:

Un ejemplo esquemático del funcionamiento de return

Rehagamos el ejemplo anterior que no funcionaba por cuestiones de ámbito de las variables, pero enviando el resultado por medio de return:


    function concatenar_cadenas(){
        var a = "orda";
        var b = "lía";
        var c = a + b;
        return c;
    }
    
    function mostrar_resultado(){
        alert(concatenar_cadenas());
    }
    
    mostrar_resultado();
            

Ahora mostrar_resultado cuenta con el alert que tiene que mostrar el resultado de la concatenación. En la alerta invocamos la función concatenar_cadenas, que devuelve el valor de c; así, es como si en hubiéramos hecho una alerta de c directamente.

En este ejemplo no hemos necesitado enviar argumentos porque se trata de un ejemplo muy sencillo, pero en los ejemplos sobre funciones veremos esto con más detalle.

Contacto

En virtud de la Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal le informo de que los datos que proporcione no serán empleados para otro fin que el de responder a su mensaje. En especial, me comprometo a no cederlos a terceros ni a emplearlos para enviar información no solicitada.

Del blog de Digital Icon