2011-03-19 42 views
1

我使用的是遵循CommonJS標準的Backdraft loader。我試圖瞭解一切如何運作,但現在我需要一些建議。CommonJS&功能

比方說,我希望得到一個時間戳,我這樣做:

define(function(){ 
    return (new Date()).getTime() 
}); 

然後我做一個簡單的要求,並嘗試運行它:

require(['timestamp'],function(timestamp) { 
    console.log(timestamp()) 
    console.log(timestamp()) 
    console.log(timestamp()) 
} 

現在我得到的是相同的時間戳記是評估時間戳函數的3倍。 define()會自動執行一個閉包還是發生了什麼?

我學習函數式編程所以不理解怎麼做,可重複使用是有點妨礙我的努力:)

回答

1

這不是Functionnal編程這些小功能。這是關於CJS模塊的定義。

在上面的例子中,在你需要「timestamp」模塊後,Backdraft loader(假設它和RequireJS一樣,因爲我不知道Backdraft)會幫助新的時間戳並緩存它。所以每次你調用這個函數。它返回相同的值。