Preguntas etiquetadas con closures

Un cierre es una función de primera clase que se refiere a (cierra) variables del ámbito en el que se definió. Si el cierre aún existe después de que finaliza su alcance de definición, las variables sobre las que se cierra continuarán existiendo también.

2819
Cierre de JavaScript dentro de los bucles: ejemplo práctico simple

На этот вопрос есть ответы на Stack Overflow на русском : Почему асинхронная функция внутри цикла выполняет посл тара таралателька var funcs = []; // let's create 3 functions for (var i = 0; i < 3; i++) { // and store them in funcs funcs[i] = function() { // each...

562
Cierre de JavaScript frente a funciones anónimas

Un amigo mío y yo estamos discutiendo qué es un cierre en JS y qué no. Solo queremos asegurarnos de que realmente lo entendemos correctamente. Tomemos este ejemplo. Tenemos un ciclo de conteo y queremos imprimir la variable de contador en la consola con retraso. Por lo tanto, usamos setTimeouty...

316
Acceso a cierre modificado

string [] files = new string[2]; files[0] = "ThinkFarAhead.Example.Settings.Configuration_Local.xml"; files[1] = "ThinkFarAhead.Example.Settings.Configuration_Global.xml"; //Resharper complains this is an "access to modified closure" for (int i = 0; i < files.Length; i++ ) { // Resharper...

249
¿Qué capturan los cierres de función (lambda)?

Recientemente comencé a jugar con Python y encontré algo peculiar en la forma en que funcionan los cierres. Considere el siguiente código: adders=[0,1,2,3] for i in [0,1,2,3]: adders[i]=lambda a: i+a print adders[1](3) Construye una matriz simple de funciones que toman una sola entrada y...

216
Variable capturada en un bucle en C #

Encontré un problema interesante sobre C #. Tengo un código como el de abajo. List<Func<int>> actions = new List<Func<int>>(); int variable = 0; while (variable < 5) { actions.Add(() => variable * 2); ++ variable; } foreach (var act in actions) {...

182
var self = esto?

El uso de métodos de instancia como devoluciones de llamada para los controladores de eventos cambia el alcance de thisde "Mi ejemplo" a "Lo que acaba de llamar la devolución de llamada" . Entonces mi código se ve así function MyObject() { this.doSomething = function() { ... } var self =...