Nó sẽ hoạt động tương tự, nhưng nó có thể dễ dàng phá vỡ các tập lệnh khác trên trang của bạn, nếu bạn đã khai báo một biến với số nhận dạng được sử dụng trong mã Google.
Bằng cách đóng gói khai báo trong một đóng cửa, các biến được phạm vi cho chức năng ẩn danh và không bị rò rỉ phạm vi toàn cầu.
Ví dụ, hãy xem xét ví dụ này với phạm vi mới:
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);
})();
Và ví dụ này mà không có nó:
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);
Nguồn
2012-10-31 08:01:53
Điều này nhằm tránh gây ô nhiễm không gian tên chung với các biến 'ga' và' s'. – AKX