Najłatwiej wyjaśnić z kodem:Moduły węzła - eksportowanie zmiennej w zależności od funkcji eksportu, które ją odwołują?
##### 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
Eksportowane funkcje działają zgodnie z oczekiwaniami. Ale nie jestem jasne, dlaczego m.count nie jest również 11.
Nie wszystko przekazuje się według wartości! Funkcje i obiekty są zawsze przekazywane przez odniesienie. – zetlen
@zetlen nie są przekazywane wartością. Wartość, którą przekazują, jest odniesieniem do obiektu. Przekazywanie przez odniesienie to wskaźniki. Nie mamy żadnych wskazówek. – Raynos