otra - ¿Cuál es la diferencia entre funciones anónimas y en línea en JavaScript?
funciones lambda javascript (4)
La función en línea es algo diferente, citando de wikipedia:
una función en línea es una función sobre la cual se le ha solicitado al compilador que realice la expansión en línea. En otras palabras, el programador ha solicitado que el compilador inserte el cuerpo completo de la función en cada lugar al que se llame la función, en lugar de generar código para llamar a la función en el lugar que se define. Los compiladores no están obligados a respetar esta solicitud.
Javascript no es compatible con el concepto de función en línea. Pero encontré algunas referencias en la web donde las devoluciones de llamada como:
(function(){
setTimeout(/*inline function*/function(){ /*some code here*/ }, 5);})
();
se llaman función en línea. Como puede ver, estas funciones tampoco tienen ningún nombre, por lo que son esencialmente las mismas que las funciones anónimas. Creo que, dado que está definiendo la función en la que la está utilizando, se ha hecho referencia a ella mediante una función en línea, pero el nombre "función anónima" describe mejor la noción.
El título resume mi pregunta. Un ejemplo que demuestra el punto sería bueno.
Las funciones anónimas se definen de esta manera
var x = 1;
(function(x){
// Do something
console.log(x); // 1
})(x);
Sin embargo, la definición de la función en línea es un poco confusa para mí.
Función en línea
var foo = function (){
alert(''Hello'')
}
setTimeout(foo, 100);
Función anónima
setTimeout(function(){
alert(''Hello'')
}, 100);
Están haciendo lo mismo, pero la función en línea es mejor cuando quieres reutilizarla. Anónimo es bueno para el uso de una sola vez porque no necesita preocuparse si su nombre entra en conflicto con otras variables, y es más corto.
Entonces depende de tu situación.
En primer lugar, no parece haber una definición de consenso para funciones en línea en JavaScript. Considero que una función en línea es un caso especial de una función de JavaScript. Una función en línea es una función asignada a una variable que se crea en tiempo de ejecución en lugar de en tiempo de reproducción.
Las funciones anónimas y las funciones en línea son prácticamente las mismas, ya que se crean en tiempo de ejecución. La diferencia es que una función en línea se asigna a una variable y, por lo tanto, puede reutilizarse. De esa manera, las funciones en línea funcionan igual que una función normal.
Función
function func() {
alert (''function'');
}
$(''a'').click(func);
Función en línea
var func = function() {
alert (''inline'')
};
$(''a'').click(func);
Función anónima
$(''a'').click(function() {
alert(''anonymous'');
});
Las funciones anónimas y en línea pueden tener penalizaciones de rendimiento en comparación con una función normal. Ver var functionName = function () {} vs function functionName () {} .