No, non di tutti. Se ad esempio programmi in bash e dichiari una funzione dentro un'altra funzione la funzione annidata verrà comunque salvata nel global scope. Tra l'altro quella di usare la sintassi seguente per non "sporcare" il global scope:Originariamente inviato da American
Ma quello delle closures comunque è un fenomeno di tutti i linguaggi, mica solo di JS, giusto?
è solo una prassi dovuta all'esistenza di un browser come Internet Explorer, che non supporta l'operatore let. La via "ufficiale" (nonché la meno dispendiosa e la più performante) per il block scoping in JavaScript è infatti la seguente:codice:(function () { var variabileLocale1 = "Ciao"; var variabileLocale2 = "Mondo"; // etc. etc. })();
codice:<script type="application/javascript;version=1.7"> var esempio = "Ciao"; let (esempio) { esempio = "Mondo"; alert(esempio); // "Mondo" } alert(esempio) // "Ciao" </script>![]()