O chamado fechamento deve se referir: uma função interna que lê variáveis diferentes da função atual, ou seja, o ambiente de contexto em que foi criado.
A cópia do código é a seguinte:
função hello () {
var char = "Olá, mundo";
function print () {
console.log (char);
};
return print ();
}
Deve -se notar que a função de impressão aqui se refere à variável de char da função de alô externa, então aqui podemos retornar um
A cópia do código é a seguinte:
Olá, mundo
Em certo sentido, essa função deve ser atribuída ao escopo. Obviamente, não temos como acessar diretamente o char, a menos que haja um erro quando declaramos essa variável. como
A cópia do código é a seguinte:
função hello () {
char = "Olá, mundo";
function print () {
console.log (char);
};
return print ();
}
Só porque há um VAR ausente.
A cópia do código é a seguinte:
Aqui olá se torna um fechamento. Um fechamento é um objeto especial. Consiste em duas partes: uma função e o ambiente em que a função é criada. O ambiente consiste em quaisquer variáveis locais no escopo quando o fechamento é criado.
Fechos de javascript e este
Deve -se notar que pode haver problemas ao ler isso e argumentos.
A cópia do código é a seguinte:
função hello () {
this.char = "Olá, mundo";
função output () {
char = "Eu não sou olá, mundo";
console.log (this.char);
};
return Output ();
}
Obviamente, este exemplo não é apropriado o suficiente. Portanto, precisamos de um exemplo adicional para explicar esse problema. A seguir, é apresentado um exemplo da "Programação Avançada JavaScript" para ilustrar esse problema.
A cópia do código é a seguinte:
var name = "The Window";
var object = {
Nome: "Meu objeto",
getNamefunc: function () {
Return function () {
retornar este.name;
}
}
};
object.getNamefunc () () ()
Mas esse uso é realmente, e a solução é salvar uma variável temporária que, como mencionado no artigo anterior "Alguns conhecimentos sobre isso em JavaScript".
A cópia do código é a seguinte:
var name = "The Window";
var object = {
Nome: "Meu objeto",
getNamefunc: function () {
var que = this;
Return function () {
devolver isso.name;
}
}
};
object.getNamefunc () () ()
JavaScript Fechamentos e Leia e Escreva Variáveis
Vale ressaltar que, se não processarmos bem nossas variáveis, também podemos modificá -las.
A cópia do código é a seguinte:
função hello () {
var char = "Olá, mundo";
retornar{
set: function (string) {
return char = string;
},
Print: function () {
console.log (char)
}
}
}
var diz = hello ();
Say.Set ('Novo olá, mundo')
Say.print () // Novo Hello World
Fechamentos e desempenho de JavaScript
Citação MDC
A cópia do código é a seguinte:
Se não forem necessários fechamentos para determinadas tarefas especiais, não é prudente criar funções em outras funções sem necessidade, porque os fechamentos têm efeitos negativos no desempenho do script, incluindo velocidade de processamento e consumo de memória.
O artigo também mencionado.
A cópia do código é a seguinte:
Por exemplo, ao criar um novo objeto ou classe, os métodos geralmente devem estar associados ao protótipo do objeto, em vez de definidos no construtor do objeto. O motivo é que isso fará com que o método seja reatribuído quando sempre que o construtor for chamado (isto é, para a criação de cada objeto).