如何在 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 对象的匿名函数。然后将这些对象输入到函数中。
以下代码摘自网上教程。
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 对象的匿名函数。然后将这些对象输入到函数中。