2013-08-23 81 views
1

在一個JavaScript文件中,腳本被包裝進了這個,爲什麼要把代碼包裝進去呢?對此有何參考?爲什麼定義Basepage=global.Basepage

;(function (global,$,_) { 
    var Basepage=global.Basepage = Backbone.View.extend({}); 
}(app,jQuery,_)); 
+0

這些鏈接應該可以幫助您:http://stackoverflow.com/a/7145534/2287470&http://markdalgleish.com/2011/03/self-executing-anonymous-functions/ – Joe

+0

閱讀此:http:/ /djay.net84.net/immediately-invoked-function-expression-part-2/和this:http://djay.net84.net/immediately-invoked-function-expression-part-3/ – Yang

回答

1

通過設置var Basepage,BasePage的將成爲該函數中的局部變量,他們並不需要編寫global.Basepage任何進一步引用。像這樣的組織有幾個好處,我會盡力列出每個。

  1. 該函數內的任何變量都將無法被其他代碼部分訪問。如果您聲明一個常用名稱,如var xvar element,並且不希望它與其他人混在一起作爲全局變量,那麼這非常有用。
  2. 在函數內部,'app'被稱爲'global'。設置'global.Basepage = Backbone.etc ...'意味着在該函數執行後,app將具有BasePage作爲屬性。
  3. 一些JavaScript加載器框架依賴於這種風格能夠在之後初始化模塊所有的依賴項(如JQuery)都已加載。
1

這是一種方法namespacing。有了這個,你可以獲得將單個變量添加到全局名稱空間的效果,並且可以訪問它以訪問其他方法和變量。

它正在做的是在代碼被讀取時自動執行該函數,並且當它執行時,app, jQuery, and _作爲變量傳遞給函數,這些參數就是參數。 global = app$ = jQuery_ = _

這爲您提供了一種封裝功能而不污染全局名稱空間的好方法,並降低了覆蓋應用程序中具有相同名稱的變量的風險。

相關問題