Especialistas fazem um desvio! Isso não tem nada a ver com o fechamento, e eu não sei como obter o título, então acabei de coletar o número. Espero me perdoar!
Hoje, um amigo que acabou de descobrir que JS me deu um pedaço de código e me perguntou por que o método não foi executado. O código é o seguinte:
A cópia do código é a seguinte:
função makefunc (x) {
Return function () {
retornar x;
}
}
alerta (makefunc (0));
De fato, não é que não seja executado, mas que o amigo significa que o alerta deve ser "0", não function () {return x;}.
Não é que o script esteja escrito errado, é apenas que não entende o retorno, sai da função atual e retorna um valor dessa função. Se a função retornada for uma função, a função retornada em si também é a própria função.
Você pode modificar o código acima como este, que está alerta (makefunc (0) ()):
A cópia do código é a seguinte:
função makefunc (x) {
return (function () {
retornar x;
}) ();
}
alerta (makefunc (0) ());
Se você deseja retornar o resultado da execução da função, primeiro deve deixar a função executar, por exemplo:
A cópia do código é a seguinte:
função makefunc (x) {
return (function () {
retornar x;
}) ();
}
alerta (makefunc (0));
Aqui está uma função anônima.
A cópia do código é a seguinte:
(function () {
retornar x;
}) ();
Dentro do primeiro suporte, há uma função anônima, o segundo suporte é usado para chamar a função anônima e você pode passar nos parâmetros necessários no segundo suporte. Por exemplo:
A cópia do código é a seguinte:
(função (x, y) {
alerta (x + y);
})(vinte e três );