我编写 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 {
// ...
}
};
那么在第一种情况下返回一个空对象没有意义吗?