如何在Require JS define函数中处理参数

时间:2015-04-02 18:39:32

标签: javascript requirejs

以下代码摘自互联网上的教程。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

RequireJS将加载两个文件(拼写在product.js文件名上),并且它们具有返回对象的匿名函数。然后将这些对象输入函数。