javascript - 了解 RequireJS : What exactly is passed to the anonymous function?

标签 javascript requirejs

我正在尝试在我的 Web 项目中使用 RequireJS。

为了测试,我写了两个迷你函数:

乘法.js

;function multiply(x, y) {
    return parseInt(x) * parseInt(y);
}

substract.js

;function substract(x, y) {
    return parseInt(x) - parseInt(y);
}

一切都完美加载,所以我绝对是在正确的轨道上,但仍有一些我不明白的地方。

ma​​in.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)); 告诉我它未定义。

我知道这个问题可能很基础,但为什么它未定义以及传递给匿名函数的是什么?

最佳答案

你做错了很多事。

首先,您需要将multiplysubtract 声明为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));
});

请注意,您在上面声明的模块将作为参数注入(inject)到应用程序函数中。然后,您可以通过这些参数使用模块返回值。

是的,您的代码可以工作,但它没有正确使用 RequireJS。它只是简单地定义multiplysubtract 全局,而不是作为模块。 RequireJS 的部分目的是将您的代码收集到不会污染全局命名空间的模块中。


注意:我更正了您的拼写错误,并将所有“substract”实例都转换为“subtract”。

关于javascript - 了解 RequireJS : What exactly is passed to the anonymous function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28131219/

相关文章:

javascript - 使用 requirejs 编译 javascript 程序以删除 require 依赖

javascript - 如何在没有 Kibana 的情况下从 AWS 中的 ElasticSearch 访问数据?

unit-testing - 使用 QUnit、Grunt 和 RequireJS 进行单元测试

asp.net-mvc-4 - 结合 ASP.NET MVC4 捆绑和 require.js javascript 模块依赖

javascript - JSF 客户端事件框架可减少耦合和网络流量

javascript - Uncaught Error : Module name "aaa_bbb_1_pb" has not been loaded yet for context: _. 使用 require([])

javascript - 使用RequireJS优化的奇怪输出

javascript - 使用 Angular - 不显示基于其他数组项目的 Ng-Repeat 数组项目

javascript - Uncaught ReferenceError : Component not defined in Meteor

javascript - 着色连通分量 D3 V3