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 {
// ...
}
};
だから最初のケースでは、空のオブジェクトを返すために、その後意味がありませんか?
ハスケルのクリエイターの一人が言ったように(言い換えれば)「マシン全体が純粋に機能的なアプローチで実行されていれば、そのマシンから抜け出すのは熱い箱になります。実際に結果を見ることは決してありませんそれは計算した "。 :) –