Dlaczego otrzymuję wartość „wyniku” dla tego zamknięcia?
Powiedzmy, że mam ten kod (skrzypce) przeznaczone do zapamiętywania modułów:
var chat = {
// Create this closure to contain the cached modules
module: function() {
// Internal module cache.
var modules = {};
console.log('in module:', name); // <---------- "in return: result"
// Create a new module reference scaffold or load an
// existing module.
return function(name) {
console.log('in return:', name); // <---------- "in return: derp"
// If this module has already been created, return it.
if (modules[name]) {
return modules[name];
}
// Create a module and save it under this name
return modules[name] = { Views: {} };
};
}()
};
chat.module("derp");
Nigdzie w kodzie nie ma nawet słowa „wynik”. Dlaczego powinien zwracać tę wartość w pierwszym dzienniku konsoli?
Ponadto, w jaki sposób funkcja zwraca wartość dlaname
parametr, gdy żaden nie jest określony wmodule: function() {}
deklaracja?