検索

ホームページ  >  に質問  >  本文

(意図的なクロージャを除いて) 関数内で関数を宣言することは避けるべきでしょうか?

リーリー

関数テストはクリックされるたびに宣言され、クリック コールバックが実行されて GC されます。dom が複数回クリックされた場合、各クリック コールバックにはもう 1 つの関数宣言があります。関数宣言は存在しないことを覚えています。 jshint の仕様で許可されていますが、ループに書き込む場合も同様の状況ではないでしょうか?では、どう対処するのがベストなのでしょうか? テスト関数の宣言位置を外側に移動すればよいでしょうか? そうするとクロージャが発生し、テスト関数が再利用できなくなります。ユーザーがこのロジックを 1 回しか使用しない場合、明らかに損失です。どうすればよいでしょうか?トレードオフですか? ~

迷茫迷茫2810日前597

全員に返信(3)返信します

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:25:40

    ループと関数には違いがあります。

    ループは独立したスコープではないため、ループ内の関数の宣言は事前に宣言されますが、関数内では宣言されません。 jshint が防ぐのは定義の繰り返しです。

    リーリー

    b は関数 a が実行されるときにのみ宣言され、b を指す外部参照がない場合、関数が次のラウンドのリサイクルを実行した後に破棄されます。

    実際には大きな違いはありません。

    返事
    0
  • 世界只因有你

    世界只因有你2017-05-19 10:25:40

    リーリー

    テストは使用後廃棄されます。リサイクル不可能ではありません。

    返事
    0
  • 为情所困

    为情所困2017-05-19 10:25:40

    一度だけ実行する場合は次のようになります:

    リーリー

    定義された foo は外部の世界に影響を与えません。使用後はすぐにアンインストールし、リサイクルされるまで待ちます。
    メリットと名声を隠してクリーンアップします

    返事
    0
  • キャンセル返事