Я пишу код на 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 {
// ...
}
};
Так что не имеет смысла возвращать пустой объект в первом случае?