- Entrada
- Sortida
- Entrada/Sortida
En el cas de JS, els paràmetres només són d'entrada. Què significa això?
Que per molt que modifiqui el valor d'un paràmetre dins la funció, quan s'acabi la funció no es veurà aquest canvi a defora de la funció.
Exemple:
Anem a suposar que tenim una funció que donat un nombre ens retorna la suma d'aquest nombre amb el seu següent.
function suma(i) {
i = i + i+1; // o també i = (2*i) +1
return i;
}
var nombre = 0;
var res = suma(nombre);
var res2 = suma(nombre);
El valor de la variable res y res2 serà 1.
El que passa realment quan cridam una funció és que és copia el valor del paràmetres reals(0) als paràmetres formals de la funció(i). Per tant quan s'executa la funció és reserva espai de memòria per els paràmetres necessaris i és copien el valor del paràmetres reals. Quan s'acaba la funció, tot l'espai de memòria utilitzat per aquesta, tant si son variables com paràmetres, és alliberat.
En els casos que passem per paràmetre una estructura de dades (array, objectes,...), el que és passa realment és l'adreça de memòria on estan ubicades aquestes , conseqüentment si modificam aquesta dins la funció també resulta modificada. En aquest cas podem veure que les estructures de dades és passen per referència (adreça de memòria),d'entrada i sortida.
Resum
Tipus bàsics de dades (nombre, booleà, caracter, ...) -> d'Entrada
Estructures de dades(Arrays, Objectes, strings) -> d'Entrada i Sortida