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.