Para los que aprendimos un lenguaje Orientado a Objetos antes que javascript algunas veces desconocemos la naturaleza dinámica de este lenguaje, y una de las cosas naturales es poder guardar una función en una variable e igual enviarse esa función como parámetro.
Existen dos formas de hacerlo y la primera es haciendo una función anónima:
//creamos una función que recorre una lista function recorreLista(funcionPasadaXParametro){ //recorremos el arreglo/lista //utilizamos la palabra reservada this para referirnos al objeto que es dueño de este metodo. for(i=0;i<this.length;i++){ //ejecutamos la función pasada como parametro, la cual se le envia el elemento actual funcionPasadaXParametro(this[i]); } } //creamos arreglo arreglo=new Array(1,3,4,5); //asignamos la funcion al metodo recorre arreglo.recorre=recorreLista; //ejecutamos la función pasandole una función anonima arreglo.recorre( //FORMA 1 para pasar una función como paramétro //creamos la función anonima function(elemento){ //mostramos el elemento actual alert(elemento) } );
La segunda forma de pasar una función como parámetro, es pasando una función existente.
//creamos una función la cual enviaremos function multiplicaX10(elemento){ alert(elemento*10); } //FORMA 2 para pasar una función como parametro arreglo.recorre(multiplicaX10);
Nota: Recuerden no poner los paréntesis cuando se pasa una función ya existente como parámetro, el hecho de poner los paréntesis ejecuta la función.