用代码最容易解释:

##### module.js
var count, incCount, setCount, showCount;
count = 0;

showCount = function() {
 return console.log(count);
};
incCount = function() {
  return count++;
};
setCount = function(c) {
  return count = c;
 };

exports.showCount = showCount;
exports.incCount = incCount;
exports.setCount = setCount;
exports.count = count; // let's also export the count variable itself

#### test.js
var m;
m = require("./module.js");
m.setCount(10);
m.showCount(); // outputs 10
m.incCount();
m.showCount(); // outputs 11
console.log(m.count); // outputs 0

导出的函数按预期工作。但我不清楚为什么 m.count 不是 11。

最佳答案

exports.count = count
您将对象 count 上的属性 exports 设置为 count 的值。 IE。 0.

一切都是按值传递而不是按引用传递。

如果您要将 count 定义为这样的 getter:

Object.defineProperty(exports, "count", {
  get: function() { return count; }
});

然后 exports.count 将始终返回 count 的当前值,因此为 11

关于javascript - Node 模块 - 导出变量与导出引用它的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7381802/

10-13 00:46