vivir viviendo venezuela rusia que opina mexico mexicanos mejor las españa entre donde diferencias deben culturales comparaciones javascript closures callback

javascript - viviendo - ¿En qué se diferencia un cierre de una devolución de llamada?



mexicanos viviendo en españa (9)

Hice una pregunta sobre las devoluciones de llamada y llegué a otra pregunta (ver comentario). ¿En qué se diferencia un cierre de una devolución de llamada?


¿No veo cómo los dos están incluso relacionados? Un cierre lleva partes de un estado local a una función de algún tipo, piénselo como una referencia.

Una devolución de llamada está destinada a notificarle sobre ciertos cambios y redirige el flujo del programa. El cierre podría modificar el estado local, pero nunca obtendría tiempo de procesador para manejar eso, como lo haría con una devolución de llamada.


¿Qué es una función de devolución de llamada?

Una función de devolución de llamada es una función que es:

  • Pasado como argumento a otra función
  • se invoca (ागू) después de algún tipo de evento
  • una vez que su función principal se completa, la función que se pasa como argumento se llama

en inglés sencillo decimos que una devolución de llamada es cualquier función a la que llama otra función, que toma la primera función como un parámetro o una función pasada como un argumento

  • Nota: invocado : el código dentro de una función se ejecuta cuando se invoca la función. o decimos así. Es común usar el término "llamar a una función" en lugar de "invocar una función".

También es común decir "llamar a una función", "iniciar una función" o "ejecutar una función".

function getUserInput(firstName, lastName, age, callback2,callback1) { var fullName = firstName + " " + lastName; // Make sure the callback is a function if (typeof callback2 === "function") { // Execute the callback function and pass the parameters to it callback2(fullName, age); } if (typeof callback1 === "function") { callback1(lastName); } } function callbackforlastname1(lname){ console.log("---"); } function genericPoemMaker(name, aged) { console.log(name + " is finer than fine wine."); console.log("A " + aged + " of unfortunl smile"); } getUserInput("Avinash", "Maurya", "26", genericPoemMaker,callbackforlastname1);

कॉल करते है

Aquí hay una manera de diferenciar entre esos dos:

Cierre

Un Cierre se usa para ampliar la funcionalidad, por ejemplo, si un usuario hace clic en un botón, queremos que suceda algo en la pantalla, en ese caso, usaríamos un Cierre donde pasamos el evento del usuario (un clic) y luego enviamos datos a la vista.

Llamar de vuelta

Una devolución de llamada es más o menos similar a un cierre, pero se usa más para informar y proporcionar capacidades síncronas. Por ejemplo, si realiza llamadas jQuery Ajax, tendrá devoluciones de llamada como success() , error() , beforeSend() y así sucesivamente para manejar los datos asíncronos.


Consulte la introducción en este: http://jibbering.com/faq/faq_notes/closures.html . Puede ayudarlo a comprender mejor cómo se relacionan los cierres con las funciones.

Aquí hay un conjunto de ejemplos de cierre: http://www.javascriptkit.com/javatutors/closures2.shtml

Básicamente, la devolución de llamada es como un puntero a función. El bit que lo hace un cierre, es cuando esa función accede a cualquier cosa en el contexto donde vive, como las variables externas. Cuando eso suceda, la función utilizará los valores actuales de las variables (en lugar de copiarlas). Ver ejemplo 4.


Diferentes definiciones:

Callback

una devolución de llamada es un código ejecutable que se pasa como un argumento a otro código.

Closure -

un cierre es una función que se evalúa en un entorno que contiene una o más variables vinculadas. Cuando se llama, la función puede acceder a estas variables.


En palabras simples: una devolución de llamada utilizando variables de contexto es un cierre.


Hay una buena definición de cierres here :

Un "cierre" es una expresión (normalmente una función) que puede tener variables libres junto con un entorno que vincula esas variables (que "cierra" la expresión).

En la práctica, eso significa que es una función que tiene algunas variables ocultas.

Una devolución de llamada es una idea de nivel superior. En general, es una función que se transmite con la intención de ser llamada en un momento posterior. En JavaScript, los cierres se utilizan a menudo como devoluciones de llamada.


Una devolución de llamada en función de una variable de contexto, también conocida como variables vinculadas (== estado de objeto) será un cierre. Será una función pura, de lo contrario, cuando solo tome variables libres (== parámetros).


cierre:

  • Una palabra clave de función dentro de otra función, está creando un cierre

  • O una función de retorno a otra función podemos decir cierre.

Nota Inglés llano: una pequeña diferencia de bits que pasa como argumento en otra función es callback o si se define en otra función es el cierre

var length = 101; function fn2() { console.log("fffxxx: "+this.length); } var obj = { length: 5, method3: function(fn) { fn(); arguments[0](); } }; obj.method3(fn2, 1);

** Salida de होगा

fffxxx:101 fffxxx:2**