Prima di tutto, guardare da vicino l'uso di questa costruzione:
mod(3)(9);
È possibile dividere in due fasi:
var fn = mod(3);
fn(9);
Da qui è evidente che mod(3)
da solo deve restituire un nuova funzione in modo che in seguito possa essere richiamata di nuovo. Questa nuova funzione deve conservare il valore passato con la prima chiamata. Questa è la parte fondamentale: è necessario memorizzare il valore nella chiusura (beh è memorizzato automaticamente a causa della natura delle chiusure):
function mod(x) {
return function(y) {
return y % x;
};
}
Arriva buon esempio del termine "chiusura". Se qualcuno ti chiede (sul colloquio, per esempio) puoi dire: chiusura è la funzione con lo scopo in cui è stata originariamente creata. Quindi, nella funzione sopra, la nuova funzione interna ha sempre accesso interno al parametro funzione esterna x
.
di ritorno di una funzione. Controlla le esercitazioni su funzioni di ordine superiore e currying. Penso che tu intenda 'mod (3) (9)' – elclanrs
'mod ((3) (9))' --- non è un JS sintatticamente valido. Quindi non è possibile scrivere una funzione in modo tale che una chiamata di tipo restituita '0' – zerkms
sembra una domanda di intervista stupidata –