El llamado cierre debe referirse a: una función interna que lee variables distintas de la función actual, es decir, el entorno de contexto en el que se creó.
La copia del código es la siguiente:
función hello () {
var char = "Hola, mundo";
function print () {
console.log (char);
};
return print ();
}
Cabe señalar que la función de impresión aquí se refiere a la variable Char de la función de saludo externa, por lo que aquí podemos devolver un
La copia del código es la siguiente:
Hola Mundo
En cierto sentido, esta función debe atribuirse al alcance. Por supuesto, no tenemos forma de acceder a Char directamente, a menos que haya un error cuando declaramos esta variable. como
La copia del código es la siguiente:
función hello () {
char = "Hola, mundo";
function print () {
console.log (char);
};
return print ();
}
Solo porque falta una var.
La copia del código es la siguiente:
Aquí hola se convierte en un cierre. Un cierre es un objeto especial. Consiste en dos partes: una función y el entorno en el que se crea la función. El entorno consiste en cualquier variable local en el alcance cuando se crea el cierre.
Cierres de JavaScript y esto
Cabe señalar que pueden ocurrir problemas al leer esto y los argumentos.
La copia del código es la siguiente:
función hello () {
this.char = "Hola, mundo";
Función output () {
char = "no soy hola mundo";
console.log (this.char);
};
return output ();
}
Por supuesto, este ejemplo no es lo suficientemente apropiado. Por lo tanto, necesitamos un ejemplo adicional para explicar este problema. El siguiente es un ejemplo de "JavaScript Advanced Programming" para ilustrar este problema.
La copia del código es la siguiente:
var name = "la ventana";
objeto var = {
Nombre: "Mi objeto",
getNameFunc: function () {
Función de retorno () {
devolver esto.name;
}
}
};
Object.getNameFunc () () ()
Pero este uso es realmente, y la solución es guardar una variable temporal que, como se menciona en el artículo anterior, "algún conocimiento sobre esto en JavaScript".
La copia del código es la siguiente:
var name = "la ventana";
objeto var = {
Nombre: "Mi objeto",
getNameFunc: function () {
var que = esto;
Función de retorno () {
devolver eso.name;
}
}
};
Object.getNameFunc () () ()
Cierres de JavaScript y leer y escribir variables
Vale la pena señalar que si no procesamos bien nuestras variables, también podemos modificarlas.
La copia del código es la siguiente:
función hello () {
var char = "Hola, mundo";
devolver{
set: function (string) {
return char = string;
},
print: function () {
console.log (char)
}
}
}
var dice = hola ();
say.set ('nuevo hola, mundo')
say.print () // nuevo Hello World
Cierres y rendimiento de JavaScript
Cita MDC
La copia del código es la siguiente:
Si no se requieren cierres para ciertas tareas especiales, no es prudente crear funciones en otras funciones sin necesidad, porque los cierres tienen efectos negativos en el rendimiento del script, incluida la velocidad de procesamiento y el consumo de memoria.
El artículo también mencionado.
La copia del código es la siguiente:
Por ejemplo, al crear un nuevo objeto o clase, los métodos generalmente deben estar asociados con el prototipo del objeto en lugar de definirse en el constructor del objeto. La razón es que esto hará que el método se reasigne una vez cada vez que se llama al constructor (es decir, para la creación de cada objeto).