JavaScript:Learn’this’-関数の呼び出しサイトを見つける

これは、thisが実際にJSにあることを学ぶことに焦点を当てたシリーズの最初の記事です。 thisが何にバインドされているかを正しく判断するには、まずJSでthisバインディングを決定する際に必要ないくつかの基本的な概念を理解し、関数の呼び出しサイトが何であるかを知ることが重要な概念の一つであることを理解する必要があります。

関数の呼び出しサイトが何であるかに飛び込む前に、最初にcall-siteを知る必要がある理由を理解しようとしましょう。 その理由は次のとおりです。

  1. おそらく、コードの一部で”サイト”するのは非常に簡単なものです。 しかし、時には、特定のコーディングパターンは、実際のコールサイトを非表示にすることができます。 したがって、このトピックに関連するすべてのあいまいさを取り除くには、コールサイトを(非常に明確に)理解する必要があります。
  2. thisバインディングがどのように機能するかを理解したい場合は、重要なのは唯一のことです。

そうは言っても、関数の呼び出しサイトを理解しましょう。一般的に、関数の呼び出しサイトは、「特定の関数が特定のコードで呼び出される場所」です。 したがって、その場所に移動すると、その関数の呼び出しサイトがどこにあるかがわかります!次のコードスニペットを使って、関数の呼び出しサイトがどこにあるかを見てみましょう。

それは簡単でした! しかし、コールサイトを見つけるこの方法にはわずかな問題があります:手動で見つけるのが難しい場合があります(たとえば、1000行のコードを想像して、).

これがコールスタックの出番です。 コールスタックとは何ですか? これはスタックです(名前が示すように)。 何の? 機能の。 どの機能? 呼び出されたすべての関数の。 何のために? あなたが今あなたの実行中の場所(すなわち、現在の実行の瞬間)にあなたを連れて行くために。呼び出しスタックを見ると、実際の呼び出しサイトは、現在実行されている関数の前の関数呼び出し内にあります。

現在、プログラムを利用しましょうコースタックの電話サイトの機能は同じコードを使用上:

QUICK TIP: 関数が呼び出された順序を手動で把握するのではなく(エラーが発生しやすく面倒です)、ブラウザでデバッガツールを使用してcall-stackを確認する必要があ つまり、コード内のその場所に到達するために呼び出されたすべての関数が表示されます。 したがって、実際の呼び出しサイトは、この呼び出しスタックの先頭から2番目の関数です(つまり、現在実行中の関数の前の関数呼び出し内)。

したがって、関数の呼び出しサイトを2つの方法で見つけることができます:

  1. 特定のコードで関数が呼び出された場所を手動で検出するか、呼び出しスタックを見て(できればデバッガツールを使用して)

疑問がある場合(および一般的にも)、常にcall-stackを使用して、関数の呼び出しサイトを正しく識別します。

これで終わりです! これは、関数の呼び出しサイトを見つけるために知っておく必要があるすべてです!

次のステップ:

このシリーズの次の記事、JavaScript:’this’を学ぶ-とにかくコンストラクタとは何ですか?、JSのコンストラクタの理解に焦点を当てています。p>

読んでくれてありがとう。

🙂

コメントを残す

メールアドレスが公開されることはありません。