如何在 Require JS 定义函数中处理参数

How arguments are handled in Require JS define function

以下代码摘自网上教程。

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;
    }
  }
});

define函数的第二个参数是一个匿名函数。该函数有两个参数,即 credits 和 products。这两个参数在代码中用作对象。这些对象如何分配给这两个参数?

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;
    }
  }
});

当 require() 决定调用你的匿名 "second parameter" 函数时(这将在加载所有依赖项时发生)它会首先查找你碰巧要求的不同模块,使用你的字符串数组第一个参数。然后它创建一个匹配数组,其中包含从这些脚本返回的那些实际模块对象,并使用它来调用您的匿名函数。

如果这有助于理解,有时我的组织会发现很少的运行时问题,如果有人碰巧以错误的顺序列出一个依赖项,与匿名函数的参数相比。 (因此,如果匿名函数的参数顺序相反,它们的赋值将被颠倒,代码将无法运行)

RequireJS 将加载这两个文件(product.js 文件名拼写错误)并且它们具有 return 对象的匿名函数。然后将这些对象输入到函数中。