理解 RequireJS:到底传递给匿名函数的是什么?
Understanding RequireJS: What exactly is passed to the anonymous function?
我正在努力为我的 Web 项目使用 RequireJS。
为了测试,我写了两个小函数:
multiply.js
;function multiply(x, y) {
return parseInt(x) * parseInt(y);
}
substract.js
;function substract(x, y) {
return parseInt(x) - parseInt(y);
}
一切都加载完美,所以我绝对是在正确的轨道上,但还有一些我不明白的地方。
main.js 看起来像这样:
define(['substract', 'multiply'], function(one, two) {
console.log('substract(8, "4") --> ' + substract(8, "4"));
console.log('multiply(10, 10) --> ' + multiply(10, 10));
});
函数都可以,但是alert(typeof(one));
告诉我它是未定义的。
我知道这个问题可能很基础,但为什么它未定义以及传递给匿名函数的是什么?
你做错了很多事。
首先,你需要将multiply
和subtract
声明为RequireJS模块,像这样:
define(function () {
return function multiply(a, b) {
return parseInt(x) * parseInt(y);
};
});
对您要声明的其他模块执行相同的操作。然后,像这样编写您的应用程序模块:
define(['subtract', 'multiply'], function(subtract, multiply) {
console.log('subtract(8, "4") --> ' + subtract(8, "4"));
console.log('multiply(10, 10) --> ' + multiply(10, 10));
});
请注意,您在上面声明的模块将作为参数注入到应用函数中。然后,您可以通过这些参数使用模块 return 值。
是的,您的代码可以工作,但它没有正确使用 RequireJS。它只是全局定义 multiply
和 subtract
,而不是作为模块。 RequireJS 的部分目的是将您的代码收集到不污染全局命名空间的模块中。
注意:我更正了您的拼写错误,并将 "substract" 的所有实例都转换为 "subtract"。
我正在努力为我的 Web 项目使用 RequireJS。
为了测试,我写了两个小函数:
multiply.js
;function multiply(x, y) {
return parseInt(x) * parseInt(y);
}
substract.js
;function substract(x, y) {
return parseInt(x) - parseInt(y);
}
一切都加载完美,所以我绝对是在正确的轨道上,但还有一些我不明白的地方。
main.js 看起来像这样:
define(['substract', 'multiply'], function(one, two) {
console.log('substract(8, "4") --> ' + substract(8, "4"));
console.log('multiply(10, 10) --> ' + multiply(10, 10));
});
函数都可以,但是alert(typeof(one));
告诉我它是未定义的。
我知道这个问题可能很基础,但为什么它未定义以及传递给匿名函数的是什么?
你做错了很多事。
首先,你需要将multiply
和subtract
声明为RequireJS模块,像这样:
define(function () {
return function multiply(a, b) {
return parseInt(x) * parseInt(y);
};
});
对您要声明的其他模块执行相同的操作。然后,像这样编写您的应用程序模块:
define(['subtract', 'multiply'], function(subtract, multiply) {
console.log('subtract(8, "4") --> ' + subtract(8, "4"));
console.log('multiply(10, 10) --> ' + multiply(10, 10));
});
请注意,您在上面声明的模块将作为参数注入到应用函数中。然后,您可以通过这些参数使用模块 return 值。
是的,您的代码可以工作,但它没有正确使用 RequireJS。它只是全局定义 multiply
和 subtract
,而不是作为模块。 RequireJS 的部分目的是将您的代码收集到不污染全局命名空间的模块中。
注意:我更正了您的拼写错误,并将 "substract" 的所有实例都转换为 "subtract"。