Is there a use for anonymous functions when writing a nodejs module. I understand that we use anonymous function to limit the scope of the variables/functions used to a specific module. However, in nodejs, we use modules.exports to made a function or variable available outside the module, hence shouldn't an anonymous function be unnecessary?
The reason I ask this is because popular node modules (like async.js) extensively use anonymous functions.
Example with anonymous function
1) test_module.js
(function(){
var test_module = {};
var a = Hello;
var b = World;
test_module.hello_world = function(){
console.log(a + + b);
};
module.exports = test_module;
}());
2) test.js
var test_module = require(./test_module);
test_module.hello_world();
try {
console.log(var a is + a + in this scope);
}
catch (err){
console.log(err);
}
try {
console.log(var a is + b + in this scope);
}
catch (err){
console.log(err);
}
Output:
Hello World
[ReferenceError: a is not defined]
[ReferenceError: b is not defined]
Example without anonymous function
1) test_module2.js
var test_module = {};
var a = Hello;
var b = World;
test_module.hello_world = function(){
console.log(a + + b);
};
module.exports = test_module;
2) test2.js
var test_module = require(./test_module2);
test_module.hello_world();
try {
console.log(var a is + a + in this scope);
}
catch (err){
console.log(err);
}
try {
console.log(var a is + b + in this scope);
}
catch (err){
console.log(err);
}
Output:
Hello World
[ReferenceError: a is not defined]
[ReferenceError: b is not defined]