Por lo general, en la mayor parte de los manuales se indica que las funciones en javaScript deben definirse en el formato clásico:
1 2 3 | function miFuncion ( variable1, variable2) { // Código } |
Sin embargo las funciones en javaScript son mucho más versatiles y permiten ser definidas en cualquier momento, incluso (y esta es la parte brillante) como variables y en los mismos ámbitos que las variables...
1 2 3 | var miFuncion = function ( variable1, variable2) { // Código } |
¿Por qué es tan importante esta modalidad para declarar las funciones? Básicamente, porque nos permite entender las funciones como procesos que podemos definir y redefinir en cualquier momento según nuestras necesidades. Seguidamente mostraré unos cuantos ejemplos de como sacar partido a estas carácteristicas...
Funciones redefinibles
Declaradas de esta forma las funciones pueden ser redefinidas en cualquier momento.
1 2 3 4 5 6 7 8 9 10 11 | var operacionMatematica = function ( variable1, variable2) { return variable1 + variable2; } // Uso de operacionMatematica() como sumador... operacionMatematica = function ( variable1, variable2) { return variable1 * variable2; } // Uso de operacionMatematica() como multiplicador... |
Definiendo metodos de objetos
Al ser las propiedades de los objetos como variables, la definición de métodos de esta forma se hace mucho más sencilla:
En javascript Literal...
1 2 3 4 5 6 | var miObjeto = { propiedad1 : "valor 1", metodo1 : function (variable1) { //código... } } |
O sobre objetos ya definidos...
1 2 3 4 5 | var miObjeto = {...} miObjeto.nuevoMetodo = function () { // código } |
En lugar de codigos javaScript lanzados desde strings
Resultan muy engorrosas esas opciones de javaScript que te permiten incluir como string y codigo javaScript que luego será ejecutado. Es mucho más cómodo definir como función ese parametro y que sea esta función la que sea lanzada.
1 2 3 4 5 6 | // en vez de usar... setTimeout( "codigo javascript",2000); // usamos... setTimeout( function(){ //codigo },1000); |
Pasando procesos a otras funciones
Sobretodo en procesos de callback (acciones a realizar cuando la función acabe) resulta muy util no tener que definir la función que pasamos y en vez de eso definir la función como si fuese una variable de entrada de la primera función.
1 2 3 4 5 6 7 8 9 10 11 12 13 | var miFuncion = function ( variable1, procesoCallBack) { // Código var x=1; // Suponiendo que el codigo defina x var y=2; // Suponiendo que el codigo defina y procesoCallBack( x , y ); } miFuncion( "valor cualquiera", function (variable1,variable2 ) { alert( x + y ); }; // Se ejecutaría el codigo de miFunción y al terminar // se mostraría un alert que diría "3". |
Estas funciones se hacen realmente interesantes como callBacks para procesos Ajax, con restrasos en el tiempo o con animaciones.
Posts Relacionados:
