Quindi ho letto il numero Javascript - The Good Parts e una cosa che Crockford sottolinea è l'uso debole delle variabili globali in Javascript, in modo tale che se il prodotto viene espanso in qualche modo e si basa su una variabile 'globale' che potrebbe essere impostata inavvertitamente.Variabili globali JavaScript e funzioni anonime autoinventi
Questo è tutto a posto, e comprendo i pro/contro della protezione delle variabili, anche in altri modi, come le chiusure. Comunque, stavo facendo qualche pensiero, e avvolgendo il codice in una funzione in questo modo:
(function() {
var x = 'meh';
})();
(function() {
alert(typeof x); // undefined
})();
conferisce portata variabile, che impedisce così la contaminazione incrociata delle variabili. Non sono sicuro se ci sia un evidente svantaggio di questo approccio e mi chiedo se la community abbia qualche input, o se sto solo pensando troppo alle cose e ignorando il punto principale.
Impressionante. Apprezzo il link. Mi chiedo perché questo non sia realmente menzionato nel suo libro (finora, è possibile che sia in seguito, ma avrebbe senso averlo nella parte che colpisce le variabili globali). Almeno so di non essere troppo analitico per una volta. –
Questo è il mio giorno di raccolta nitida, a quanto pare, ma quelle cose non sono chiamate * chiusure * in senso stretto (in senso generale di informatica, tutte le funzioni JavaScript sono chiusure): quelle funzioni anonime auto-invocanti sarebbero solo chiusure se vengono utilizzati al di fuori dell'ambito in cui sono stati definiti (ad esempio, quando si collega una funzione anonima a un listener di eventi all'interno di una funzione che esce prima che il listener sia scollegato). –
@Marcel - grazie, l'ho aggiornato per usare 'function' piuttosto che' closure'. –