PROGRAMMIAMO
JS - Array e funzioni
Passare un vettore a una funzione

In JS è possibile passare un vettore a una funzione usando il nome del vettore stesso. Si consideri l'esempio seguente:

function media(numeri)
{
    var i, somma=0;
    for (i = 0; i < numeri.length; i++)
        {
        somma = somma + numeri[i];
        }
    return somma/i;
}

La funzione può essere chiamata passandole un vettore come mostra l'esempio qui soto:

var prova = [13,20,11,88];
alert(media(prova));

 

L'oggetto arguments

In JS è possibile scrivere funzioni che ricevono un numero di parametri variabile usando gli array. In realtà ogni funzione JS possiede un oggetto predefinito di nome arguments il quale contiene i valori di tutti i parametri della funzione. Si consideri l'esempio seguente di una funzione per la ricerca del massimo fra un numero variabile di valori:

function findMax()
{
    var i;
    var max = -Infinity;
    for (i = 0; i < arguments.length; i++)
        {
        if (arguments[i] > max)
            {
            max = arguments[i];
            }
        }
    return max;
}

Notiamo anzitutto l'uso della costante Infinity che rappresenta un numero che eccede il massimo valore rappresentabile. In pratica in questo modo la variabile max viene inizializzata con un valore che è certamente più basso di tutti i valori possibili.

Osservate che la funzione non presenta parametri dichiarati esplicitamente fra le parentesi. Al suo posto utilizza il vettore arguments con la sua proprietà length che contiene il numero di elementi del vettore. Al momento della chiamata alla funzione, arguments viene inizializzato con la lista dei valori passati alla funzione. Si considerino per esempio le seguenti chiamate alla precedente funzione:

x = findMax(1, 123, 500, 115, 44, 88);  // x vale 500
y = findMax(7, -15, 22, 9);  // y vale 22
z = findMax(0,-12);  // z vale 0

Si osservi come il numero di argomenti (cioè i valori passati alla funzione) sia diverso da una chiamata all'altra. Questo è appunto possibile usando l'oggetto arguments.

Funzioni che tornano un array

Oltre a ricevere un vettore come parametro, una funzione in JS può anche tornare un vettore come valore di ritorno. Per esempio la seguente funzione dividi riceve una frase composta da più parole e la divide cercando come separatore lo spazio (blank) fra una parola e l'altra:

function dividi(frase)
{
var res = frase.split(" ");
return res;
}

Il valore di ritorno res è un vettore che contiene le singole parole che compongono la frase. Per esempio nel caso qui sotto, verranno visualizzate separatamente le parole "Ciao", "a", "tutti":

parole = dividi("ciao a tutti")
for (i=0;i<parole.length;i++)
    alert(parole[i]);

 

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it