const
とwhile
ループをJSで使用することは可能ですか?我々は再帰関数を使用せずに、このような何かを行うことができる場合、私は疑問に思う:JavaScriptでwhileループでconstを使用する方法
const node = current;
while (!found(node)) {
node = node.previous
}
は、彼らは関数型プログラミングのスタイルでそれをどのように行うのですか?
const
とwhile
ループをJSで使用することは可能ですか?我々は再帰関数を使用せずに、このような何かを行うことができる場合、私は疑問に思う:JavaScriptでwhileループでconstを使用する方法
const node = current;
while (!found(node)) {
node = node.previous
}
は、彼らは関数型プログラミングのスタイルでそれをどのように行うのですか?
番号const
は定数を意味する。
const
の値は、その呼び出しの有効期間中、これまで決して変更することはできません。
let cur;
while (!found(cur)) {
node = node.previous;
// do stuff
cur = // ...
}
これでうまくいきます。
同様に
ここfor (let i = 0; i < stuff.length; i += 1) {
const thing = stuff[i];
// do stuff with a thing
}
のconstは、ループを通っている限り、単一の繰り返しのように住んでいます。
ループの外側では、すべての反復処理が繰り返されます。つまり、再作成されません。つまり、ループ全体(または関数の他の部分)から再割り当てすることはできません。定数。
しかし、どちらも特に機能しません。
再帰せずにFPを実行することは非常に可能ですが、これらの設定のどちらもそのような設定を行う方法ではありません。 map
/filter
/reduce
について学ぶことをお勧めします。また、維持しているコードの内部で状態の変化を避けるために、これらのテクニックをサポートする構造化コレクションのパターンも考えてください。 const(再割当て時に投げられる)を持つループはそれを実行しないためです。
ファンクションスタイルではwhile
ループを使用しないため、唯一の方法は再帰を使用することです。あなたのnode
はcurrent
、前のフィールドを持つオブジェクトである場合には、より多くの「機能的」な方法は何をするだろう。そして、
function find(startNode) {
if (!found(startNode)) {
if (startNode.previous) {
return find(startNode.previous)
} else {
return null
}
} else {
return startNode
}
}
と初期ノード上find
を呼び出します。
http://stackoverflow.com/questions/31987465/ecmascript-2015-const-in-for-loops –
あなたのコードで 'cur'と' node'が同じ変数であることを意味しましたか? – sepp2k
申し訳ありませんが、編集中の私の間違いです –