2015-04-02 29 views
0

下面的代碼是從互聯網上的教程中獲取的。在JS中如何處理參數定義函數

purchase.js

define(["credits","products"], function(credits,products) { 

    console.log("Function : purchaseProduct"); 

    return { 
    purchaseProduct: function() { 

     var credit = credits.getCredits(); 
     if(credit > 0){ 
     products.reserveProduct(); 
     return true; 
     } 
     return false; 
    } 
    } 
}); 

的定義函數的第二個參數是匿名函數。這個函數有兩個參數,即信用和產品。這兩個參數被用作代碼中的對象。這些對象如何分配給這兩個參數?

credits.js

define(function() { 
    console.log("Function : getCredits"); 

    return { 
    getCredits: function() { 
     var credits = "100"; 
     return credits; 
    } 
    } 
}); 

prodcts.js

define(function(product) { 

    return { 
    reserveProduct: function() { 
     console.log("Function : reserveProduct"); 
     return true; 
    } 
    } 
}); 

回答

1

當需要()決定打電話給你的匿名 「第二個參數」 功能(當所有的依賴加載,這將發生),它會首先在第一個參數中使用字符串數組,查找碰巧要求的不同模塊。然後它創建一個匹配的數組,包含從這些腳本返回的實際模塊對象,並使用它們調用您的匿名函數。

如果有助於理解,有時候我的組織會發現很少的運行時問題,如果有人碰巧按錯誤的順序列出了一個依賴項,與匿名函數的參數相比較。 (所以如果匿名函數有相反順序的參數,它們的賦值就會顛倒過來,代碼將不起作用)

0

RequireJS將加載兩個文件(在product.js文件名上拼寫錯誤)並且它們具有匿名函數返回對象。這些對象然後被饋送到該功能中。