(意図的なクロージャを除いて) 関数内で関数を宣言することは避けるべきでしょうか?
迷茫
迷茫 2017-05-19 10:23:40
0
3
573
リーリー

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(3)
过去多啦不再A梦

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

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

リーリー

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

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

いいねを押す +0
世界只因有你

リーリー

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

いいねを押す +0
为情所困

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

リーリー

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート