我一直在玩节点和Javascript IIFE,我对节点的 modules.exports 以及IIFE如何在Javascript中工作感到困惑。
(function (Calculator) {
var calculator = function () {
var currentValue = 0,
add = function (num) {
return currentValue += num;
};
return {
current: currentValue,
add: add
};
}();
module.exports = calculator;
}(module.exports));
当我使用 module.exports = calculator; 行导出模块时,上面的代码导致我的测试通过。
为什么当我使用参数计算器=计算器(注意案例)导致我的测试全部失败?
我认为计算器(参数)是指 module.exports (传入的值?
简而言之:
计算器=计算器; //不起作用
module.exports = calculator; //工作
答案 0 :(得分:2)
我认为这很有趣所以我要添加它。 @dandavis说他们是一样的。但我刚从玩它中发现你可以从传入的值中改变全局。下面的确将calculator
作为全局module.exports
的值。
至少它与我正在玩的gulp
这些东西有关。我不是节点专家,所以也许它在真正的节点服务器领域有所不同。
(function (Calculator) {
var calculator = function() {
var currentValue = 0,
add = function(num) {
return currentValue += num;
};
return {
current: currentValue,
add: add
};
}();
Calculator.exports = calculator;
})(module);