この関数は、最初に呼び出された後に自身を書き換えるため、呼び出されるたびに操作が不必要に繰り返されることがなくなります。これを具体的にどのように理解すればよいでしょうか?関数を書き換える前後で関数の実行スレッドは同じではないでしょうか?
たとえば、ブラウザごとに API 名が異なるため、統一インターフェイスをカプセル化したい場合、コードは次のようになります
余分な変数や if-else を使用せずにブール状態を区別します。 たとえば、一部の動作は初期化された状況と初期化されていない状況で異なるロジックを持つため、次のように書くことができます:
ここで問題となるのは、グローバル変数が導入され、この変数が次のように記述できる内部状態にカプセル化されることです。 リーリー
リーリー
次の 3 つの異なる書き方を感じてください:
上の階のブラウザ API の例は、一般的に、コードのパフォーマンスを最適化するために特定の不要な操作を回避することを目的としています。 リーリー
簡単に言うと
初めて関数を実行すると、alert('A') が実行され、2 回目に実行されると、alert('B') が実行されます。
不必要な操作の繰り返しを避けるというよりも、追加の操作を実行することが重要です。初めて実行すると処理 A が実行され、後で実行すると処理 B が実行されます。
たとえば、ブラウザごとに API 名が異なるため、統一インターフェイスをカプセル化したい場合、コードは次のようになります
リーリー余分な変数や if-else を使用せずにブール状態を区別します。
リーリーたとえば、一部の動作は初期化された状況と初期化されていない状況で異なるロジックを持つため、次のように書くことができます:
ここで問題となるのは、グローバル変数が導入され、この変数が次のように記述できる内部状態にカプセル化されることです。 リーリー
質問者が挙げた方法を使用する場合:リーリー
また、この書き方は非常に関数的だと感じます(関数式についてはあまり詳しくないので、あえて絶対的とは言えません)。ここにプログラミングパラダイムの問題があります。次の 3 つの異なる書き方を感じてください:
プロセス指向:リーリー
オブジェクト指向:リーリー
関数式:リーリー
関数型メソッドには多くの利点があります。これには関数型プログラミングを理解する必要があります。上の階のブラウザ API の例は、一般的に、コードのパフォーマンスを最適化するために特定の不要な操作を回避することを目的としています。 リーリー
簡単に言うと
初めて関数を実行すると、alert('A') が実行され、2 回目に実行されると、alert('B') が実行されます。
不必要な操作の繰り返しを避けるというよりも、追加の操作を実行することが重要です。初めて実行すると処理 A が実行され、後で実行すると処理 B が実行されます。