亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

全部開發者教程

JavaScript 入門教程

避免全局污染

自己的項目,其實不太能在全局污染上踩坑。

大部分因為全局污染造成的問題,都出現在老項目下,這些老項目被太多人維護,同時又缺少模塊化方案,如果開發人員的水平和意識都不是非常高,就會定義很多全局下的屬性和方法。

這時候如果自己去維護老項目沒注意,覆蓋了一個全局項目,就可能出現一個驚天大 Bug。

所以在全局環境下,非必要情況,不要直接聲明變量和聲明函數,他們會造成全局污染。

避免這個問題最常用的方法就是把自己的邏輯用一個函數包裹:

(function() {
  // 業務邏輯

  var a = 1;
  var b = 2;
  var c = 3;

  function fn() {
    console.log(a, b, c);
  }

  fn(); // 輸出:1 2 3
})();

fn(); // 拋出異常:fn is not defined

函數擁有自己的作用域,這樣就避免了全局污染的問題。

如果有時候需要通過全局做跳板,把一些內容臨時的掛載全局下,可以起一些不太容易重名的名字:

window.__$some_global_var = 1;

通過 _$ 組合一些前后綴,可以大大降低覆蓋他們或者被覆蓋的可能性。

也可以增加一個命名空間,也就給全局下增加一個對象,所有自己要用的或者某個業務相關的全局數據放在這個對象下:

window.__some_logic_need = {
  __$some_global_var: 1,
  __$some_global_fn: function() {},
};
索引目錄