javascript中運用閉包和自執行函數解決大量的全域變數問題

來源:互聯網
上載者:User

但是從全域看來,這樣會導致出現一些讓我們難以掌控的情況的出現:變數同名、多個函數共用一個全域變數後的值的變換……等等。所以,有時候,對於一些簡單的全域變數,我們可以通過另一種方式來處理——用自執行函數+閉包的方法來解:

比如:我們要在網頁載入時給出一個提示,在網頁關閉時給出另一個提示
下面的代碼,實現了以上功能 複製代碼 代碼如下:var msg1 = "歡迎光臨!"; // 定義一個全域變數
var msg2 = "再見!" //定了另一個全域變數
window.onload = function() {
  alert(msg1);
}
window.onunload = function() {
  alert(msg2);
}

這段代碼中已經用到了兩個全域變數。而只是為了實現一個簡小的功能。
而且,全域變數太多,我們必須記住:msg1是歡迎時的變數,msg2是關閉時變數……如果變數更多,我們還能記得住嗎?

下面是同樣的功能,不過運用了自執行函數+閉包方法: 複製代碼 代碼如下:(function() {
  var msg = "Hello, world!";
  window.onload = function() {
    alert(msg);
  }
})();

(function() {
  var msg = "Hello, world!";
  window.onunload = function() {
    alert(msg);
  }
})();

後者做法,雖然代碼增長了,但是:
1)msg變數只在各自的自執行函數內有效。不會和其它全域變數之間產生混淆。
2)代碼的結構變得更加的清晰。
3)解決了大量使用全域變數的情況。

以上只是本人的一點認識,希望真正的高手給出點評!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.