カレー機能コンパイラ(いくつかの男)によってキャッシュされますカレー関数はキャッシュされていますか?
以下このコンポーネントは、二つのボタンがあり、一つは、のonClickハンドラを返す関数を呼び出し、他は同じでないが、インライン。
私の知るところによれば、両方とも同じことをしており、それぞれrender()
コールで新しい機能() => this.foo()
を作成しています。誰かが、カレー化された関数バージョンがキャッシュされ、コンパイラによって最適化されているので、インラインバージョンと比較して利点があると述べました。私は、同じことと、これを書いた人が、その式でインライン関数を隠したかったと思う。
class MyComponent extends Component {
foo =() => console.log('fooo')
getFunction = callback => {
return() => callback();
}
render() {
return <div>
<button onClick={this.getFunction(this.foo)}>curried function</button>
<button onClick={() => this.foo()}>inline function</button>
</div>
}
}
私はいくつかのグーグルをしましたが、文の証明/反証を見つけるcould't、あなたは人をどう思いますか?
私は何かが足りないかもしれないが...どこカリー化はここですか?また、これはJavaScript(またはes6)ではありません。あなたは[tag:jsx]でもタグを付けることができますか? – Amadan
getFunction()で? – webdeb
Wikipedia: "数学とコンピュータサイエンスでは、複数の引数(または引数のタプル)を取る関数の評価を、それぞれが単一の引数を持つ一連の関数の評価に変換する技法です。あなたの 'foo'は無限の関数なので、カリングがどのように行われていると思いますか私の心を覆すことはできません。 「カレーリング」という別の意味を使っていますか? – Amadan