Originariamente inviato da WebDeveloper3
Solo mi spieghi perchè si mettono le doppie parentesi tonde () pure alla fine della funzione f_inner oltre che dopo il nome della funzione???
di norma una funzione viene definita con

codice:
function f() {
  ...
}
ed eseguita con

codice:
f()
con la notazione

codice:
(function f() {
  ...
}())
definisci ed eseguila funzione f allo stesso tempo (se ci pensi, come fa il codice ad eseguire la funzione inner la prima volta?)

inoltre l'identificatore f resta visibile all'interno dello scope stesso quindi puoi chiamare la funzione all'interno del suo scope