2015-06-25 79 views
-2

我期待在的jsfiddle一些代碼周圍火力地堡認證瞭解一些的jsfiddle代碼看 - 需要一些解釋

http://jsfiddle.net/firebase/a221m6pb/

但也有一些事情,我不是很讓看代碼。 .. 頂部

(function (jQuery, Firebase, Path) { 

聲明的功能這是注射服務/庫到的jsfiddle的一些方法?還沒有見過像它的例子......也誰能告訴我什麼路徑在日方法簽名是?...我明白它在這個例子中的路由中使用,但我不完全確定它是什麼。是它的某種路由框架...道歉,如果這些都是明顯的問題,我相對比較新周圍的jsfiddle + JavaScript的

+0

爲什麼downvote ...可以新手不問問題? – blu10

回答

2

在底部,您可以看到傳遞給這些參數的內容。

(window.jQuery, window.Firebase, window.Path) 

這只是一種確保這些變量引用所需範圍內的正確對象的方法。

是的,Path是用於路由。看看〜300線,你會看到。

有很多評論&註釋,你應該繼續閱讀腳本。

注意,這與JSFiddle沒有什麼特別的關係。 JSFiddle只是一個代碼編輯器平臺,其中有很多很多很喜歡它:JSBin,CodePen,WebDevOut,Plunker - 這個名單還在繼續。


擴大對這個答案,關於您的意見。如果您單擊左側的外部資源選項卡,您將看到已添加到環境中的所有腳本和資源的列表。在大多數情況下,腳本將創建某種命名空間對象全球對象上 - 在瀏覽器中的全局對象是window - 所以你最終window.jQuerywindow.Pathwindow.Firebase,等等。由於每個範圍都可以訪問全局範圍,因此通常您會在功能內部自由使用jQuery(或$),因爲它假定全局引用不會更改 - 但如果它發生了什麼呢?如果另一個庫或工具在程序中間寫入該命名空間,該怎麼辦?這會打破你所有的參考!

Firebase resources

功能的整點,你傳遞window.jQuery一個叫做jQuery是簡單地確保參數在該函數jQuery的範圍總是意味着你認爲它應該,因爲全球引用( window.jQuery)可能會在不知情的情況下被其他圖書館書寫。您不在乎名稱空間現在是否已被寫入,因爲您已經建立了對該原始對象的引用。

Path目的通過這個庫提供:pathjs

一些進一步閱讀:

+0

謝謝,值傳入雖然,他們來自哪裏?...看着jsfiddle它沒有指定任何庫,那麼Firebase jQuery從哪裏來? ...也window.Path ...這是什麼? – blu10

+0

我已經添加了一個擴展的解釋,也許這將清除你的困惑。 – Oka

+1

嗨奧卡...非常感謝你的解釋....它正是我在找...外部資源的一部分是我失蹤的事情..再次感謝 – blu10

2

這被稱爲立即調用的函數表達式(IIFE),這些都是paremeters(jQuery的,火力地堡,路徑),他們在通話結束時發送:

}(window.jQuery, window.Firebase, window.Path)) 

有關立即調用功能的更多信息,請檢查以下鏈接

http://benalman.com/news/2010/11/immediately-invoked-function-expression/

+0

我想知道這些參數值來自jQuery,Firebase,Path ...,因爲小提琴沒有使用任何庫 – blu10

2

即匿名本功能立即被調用的離子。參數在函數的結尾處設置。這裏有一個非常簡單的例子:

(function(a, b, c) { 
    // a = 1, b = 2, c = 3 
})(1, 2, 3); 

這是用來避免填充全局命名空間/以避免暴露函數/參數。

在該jsfiddle頁面上,如果您轉到邊欄並單擊「外部資源」,則會看到參數的來源。