国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

JavaScript クロージャーはどのように機(jī)能しますか?
P粉494151941
P粉494151941 2023-08-22 10:16:45
0
2
531
<p>JavaScript クロージャの概念 (関數(shù)、変數(shù)など) は理解しているが、クロージャ自體は理解していない人にクロージャを説明するにはどうすればよいでしょうか? </p> <p>ウィキペディアにあるスキームの例を見ましたが、殘念ながら役に立ちませんでした。 </p>
P粉494151941
P粉494151941

全員に返信(2)
P粉734486718

JavaScript では、各関數(shù)は外部の語彙環(huán)境へのリンクを維持します。字句環(huán)境は、スコープ內(nèi)のすべての名前 (変數(shù)、パラメーターなど) とその値のマップです。

したがって、function キーワードが表示されるたびに、その関數(shù)內(nèi)のコードは関數(shù)の外部で宣言された変數(shù)にアクセスできます。

リーリー

関數(shù) bar がパラメータ x と変數(shù) tmp を閉じるため、これは 16 を出力します。これらは両方とも外部関數(shù)に存在します。 foo

の字句環(huán)境內(nèi)。

関數(shù) bar は、関數(shù) foo

の字句環(huán)境へのリンクとともに、クロージャを形成します。

関數(shù)はクロージャを作成するために return

を行う必要はありません。宣言だけで、各関數(shù)はそれを囲む字句環(huán)境を囲み、クロージャを形成します。

リーリー

#bar のコードは、パラメータ x と変數(shù) tmp が直接參照されなくなっても參照できるため、上記の関數(shù)は 16 も出力します。範(fàn)囲。

ただし、tmpbar のクロージャ內(nèi)にまだ存在するため、インクリメントできます。 bar が呼び出されるたびに増加します。

クロージャの最も単純な例は次のとおりです:

リーリー

JavaScript 関數(shù)が呼び出されると、新しい実行コンテキスト ec が作成されます。関數(shù)パラメータとターゲット オブジェクトに加えて、この実行コンテキストは、呼び出し元の実行コンテキストの字句環(huán)境へのリンクも受け取ります。これは、外部字句環(huán)境で宣言された変數(shù)を意味します (上記の例では、a#)。 ## および b) には ec からアクセスできます。

すべての関數(shù)には外部の字句環(huán)境へのリンクがあるため、すべての関數(shù)はクロージャを作成します。

クロージャに表示されるのは変數(shù)そのものであり、コピーではないことに注意してください。

P粉904405941

クロージャは次のペアです:

  1. 関數(shù)と
  2. 関數(shù)の外部スコープ(字句環(huán)境)への參照

字句環(huán)境はすべての実行コンテキスト (スタック フレーム) の一部であり、識(shí)別子 (つまり、ローカル変數(shù)名) と値の間のマッピングです。

JavaScript のすべての関數(shù)は、外部の字句環(huán)境への參照を維持します。この參照は、関數(shù)の呼び出し時(shí)に作成される実行コンテキストを構(gòu)成するために使用されます。この參照により、関數(shù)がいつどこで呼び出されるかに関係なく、関數(shù)內(nèi)部のコードが関數(shù)の外部で宣言された変數(shù)を「參照」できるようになります。

関數(shù)が別の関數(shù)によって呼び出される場合、外部の字句環(huán)境への一連の參照が作成されます。このチェーンはスコープ チェーンと呼ばれます。

次のコードでは、inner は、foo が呼び出されたときに作成される実行コンテキストの字句環(huán)境を使用してクロージャを形成し、クロージャには変數(shù) secret## が含まれています。 #:

リーリー
最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート