Я пишу код JavaScript и пытаюсь использовать его функциональную языковую природу.
В других функциональных языках (или даже в Ruby), если я не укажу явно возвращаемое значение функции, она вернет значение последнего оцененного выражения. JavaScript не следует этому шаблону. (Если быть точным, JavaScript всегда возвращает значение. Если ничего не было установлено, то undefined
.)
У меня следующий вопрос: у меня есть функция, которая не должна (и не должна) возвращать значение. Имеет ли смысл в функциональном контексте программирования иметь функцию без явного возвращаемого значения? Или где-то произошел сбой, если я оказался в этом деле?
Например, у меня есть следующая функция. Периодически проверяется, был ли изменен хэш местоположения, и, если да, вызывает данную функцию.
LIB_hashManager = function(f, context) {
var prev = '';
var pollHash = function() {
if (prev !== window.location.hash) {
prev = window.location.hash;
f.apply(context);
}
};
window.setInterval(pollHash, 100);
};
Должен ли я вернуться сюда что-нибудь?
Обновление
Между тем мне пришло в голову, что если в будущем мне потребуется расширить знания LIB_hashManager
, следуя шаблону функционального конструктора, я могу просто добавить методы к объекту, и LIB_hashManager
вернет это произведенный объект.
LIB_hashManager = function(f, context) {
// inside logic
// ...
};
А позже я могу написать:
LIB_hashManager = function(f, context) {
// inside logic
// ...
// return public methods
return {
// ...
}
};
Так не имеет ли смысла возвращать пустой объект в первом случае?