Będzie działać tak samo, ale może łatwo złamać inne skrypty na twojej stronie, jeśli zadeklarowałeś zmienną z identyfikatorem użytym w kodzie Google.
Zawijanie deklaracji w zamknięciu powoduje, że zmienne są ograniczone do funkcji anonimowej i nie przenikają do zakresu globalnego.
Na przykład, należy rozważyć ten przykład z nowego zakresu:
var ga = "something important for my script"; // Not overwritten in this scope
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
i ten przykład bez niego:
var ga = "something important for my script"; // Overwritten!
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
Ma to na celu uniknięcie zanieczyszczania globalnej przestrzeni nazw zmiennymi 'ga' i' s'. – AKX