Normalmente se utilizan cuando un procedimiento se requiere una sola vez y no es necesario nombrar una función para ello.
Para las comparaciones entre una función común y una anónima, me basare en la siguiente:
// devuelve la cantidad de números pares que hay desde el 1 hasta el número dado. function totalpares(num) { var i,c=0; for (i=num; i>1; i--) if ((i % 2) == 0) c=c+1; alert("El numero " + num + " tiene " + c + " pares!"); }; totalpares(10); // devuelve 5
La sintaxis varía de acuerdo al lenguaje, pero aun así es similar:
Javascript:
o también:
Fíjate que en ningún momento le dimos un nombre a la función.
Ejemplo:
Podemos usar funciones anónimas dentro de otras, por ejemplo, para interceptar el envío del formulario:
Otro ejemplo al momento de trabajar con JQuery
suponiendo que tenemos el siguiente script:
lo podemos simplificar un poco, nos queda así:
Ahora es el turno de PHP: nota la similitud de la sintaxis:
Pasando el retorno de una función como argumento:
PHP nos suministra una función con la cual crear funciones anónimas, Create_function.
create_function crea una función anónima desde los parámetros pasados, y devuelve un nombre único para ella.
Puede ser usado para crear funciones en tiempo de ejecución.
Ejemplo:
O bien, de la siguiente manera:
En resumen, es mucho el código que puedes simplificar si reconoces cuando usarlas apropiadamente.
referencias:
php.net//function.create-function
php.net/functions.anonymous
(function(){ // procedimiento })();
o también:
var miFuncion = function(parametro) { // procedimiento };
Fíjate que en ningún momento le dimos un nombre a la función.
Ejemplo:
Clic aquí para mostrar u ocultar los ejemplos
- se requiere de un procedimiento que calcule la cantidad de números pares de un numero dado.
en este ejemplo no hace falta hacer ningún llamado
// almacenamos a la variable el resultado de una función var totalpares = function(num) { var i,c=0; for (i=num; i>1; i--) if ((i % 2) == 0) c=c+1; alert("El numero " + num + " tiene " + c + " pares!"); }; // llamamos a la variable pasándole el parámetro que requiere la función anónima .. totalpares(13); // devuelve 6
en este ejemplo no hace falta hacer ningún llamado
// esta función se ejecuta sola o.O (function(num){ var i,c=0; for (i=num; i>1; i--) if ((i % 2) == 0) c=c+1; alert("El numero " + num + " tiene " + c + " pares!"); })(7); // devuelve 3
Podemos usar funciones anónimas dentro de otras, por ejemplo, para interceptar el envío del formulario:
window.onload = function() { window.document.forms[0].onsubmit = function() { alert('se intenta enviar el formulario') }; };
Otro ejemplo al momento de trabajar con JQuery
Clic aquí para mostrar u ocultar los ejemplos
suponiendo que tenemos el siguiente script:
var documento; documento=$(document); documento.ready(fInicia); function fInicia() { var variable; variable=$("#buscar"); variable.focus(fFoco); } function fFoco() { var variable=$("#buscar"); variable.attr("value",""); }
lo podemos simplificar un poco, nos queda así:
var documento; documento=$(document); documento.ready(function(){ var variable; variable=$("#buscar"); variable.focus(function() { var variable2=$("#buscar"); variable2.attr("value",""); }); })
Ahora es el turno de PHP: nota la similitud de la sintaxis:
variable = function () { // procedimiento .. };
$TotalPares = function($num){ for ($i=$num; $i>1; $i--) if (($i % 2) == 0) $c=$c+1; echo $c; }; $TotalPares(7);// devuelve 3
Pasando el retorno de una función como argumento:
Clic aquí para mostrar u ocultar los ejemplos
Ejemplo: tenemos el siguiente script
lo simplificando a la siguiente manera:
// Función de comparación function cmp($a, $b) { return($a > $b); } // Array a ser ordenado $array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3); // Ordenar e imprimir el array resultante uasort($array, 'cmp'); echo '<pre>',print_r($array),'</pre>';
lo simplificando a la siguiente manera:
// Ordenar e imprimir el array resultante uasort($array, function($a, $b) { return($a > $b); }); echo '<pre>',print_r($array),'</pre>';
PHP nos suministra una función con la cual crear funciones anónimas, Create_function.
create_function crea una función anónima desde los parámetros pasados, y devuelve un nombre único para ella.
Normalmente estos parámetros serán pasados como una cadena entre comillas simples. La razón de usar comillas simples es proteger a los nombres de las variables de ser analizados, de otro modo, si se usan comillas dobles habrá necesidad de escapar los nombres de las variables, p.ej. \$avar.
Puede ser usado para crear funciones en tiempo de ejecución.
Ejemplo:
$av = array("cadena1 ", "cadena2 ", "cadena3 ", "cadena4 "); array_walk($av, create_function('&$v,$k', '$v = $v . " trozo concatenado" .($k+1);')); echo '<pre>',print_r($av),'</pre>'; /* devuelve Array ( [0] => cadena1 trozo concatenado1 [1] => cadena2 trozo concatenado2 [2] => cadena3 trozo concatenado3 [3] => cadena4 trozo concatenado4 ) */
O bien, de la siguiente manera:
$saludo = function($nombre,$apellido=''){ printf("Hola %s %s <br/>",$nombre,$apellido); }; $saludo('Ana','Gomez'); $saludo('Luis'); /* devuelve Hola Ana Gomez Hola Luis */
En resumen, es mucho el código que puedes simplificar si reconoces cuando usarlas apropiadamente.
referencias:
php.net//function.create-function
php.net/functions.anonymous
- Los comentarios están siendo moderados y serán publicados en la brevedad posible.