ホームページ > 記事 > ウェブフロントエンド > JavaScript では内部関数は常にクロージャになりますか?
JavaScript のクロージャと匿名関数
JavaScript では、内部関数が外部スコープの変数にアクセスできる場合、クロージャが発生します。外部関数の実行が完了しました。 JavaScript の多くの関数はクロージャと見なされますが、理論的には特定のサブセットのみが特に重要です。
ケース 1: 友達のコード
<code class="js">(function f() { var i2 = i; setTimeout(function g() { console.log(i2); }, 1000); })();</code>
ケース 2: コード
<code class="js">setTimeout((function f(i2) { return function g() { console.log(i2); }; })(i), 1000);</code>
結論
したがって、提供された両方の解決策において、内部関数 g はクロージャですが、クロージャではありません。外側のもの。これは、同じ結果が得られるにもかかわらず、異なるメカニズムを通じて達成されることを示しています。
以上がJavaScript では内部関数は常にクロージャになりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。