它的工作原理是一樣的,但如果您已經在Google代碼中使用了一個標識符聲明瞭一個變量,那麼它可能會輕易地破壞您網頁上的其他腳本。
通過將聲明封裝在閉包中,變量被限定爲匿名函數,並且不泄漏到全局範圍。
例如,考慮這個例子與新的範圍:
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);
})();
而且這個例子沒有它:
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);
這是爲了避免使用'ga'和's'變量來污染全局名稱空間。 – AKX