Почему я получаю значение «результат» для этого замыкания?
Допустим, у меня есть этот код (играть на скрипке) предназначен для запоминания модулей:
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");
Нигде в коде нет фразы «результат» даже упомянул. Почему он возвращает это значение в первом журнале консоли?
Кроме того, как функция возврата получает значение дляname
параметр, когда ни один не указан вmodule: function() {}
декларация?