次のシナリオを使用して、Javascriptの識別子解決がどのように機能するかを誰か説明してください:
- グローバル関数が呼び出されます。
- ユーザー定義の JavaScript オブジェクト内の関数が呼び出されます。
次のシナリオを使用して、Javascriptの識別子解決がどのように機能するかを誰か説明してください:
これを理解するには、ECMA スクリプトのコンテキストとスコープを学習する必要があります。その中間にあるのは識別子ですか、それとも変数ですか?
通常、識別子はウィンドウ オブジェクトにタグ付けされます。String() と言いますが、実際には window.String() です。
通常、ページが読み込まれると、すべての変数と関数がウィンドウ オブジェクトにプロパティとして追加されます。ブラウザの場合、window オブジェクトがグローバル コンテキスト (GC) になります。したがって、グローバル関数(これは単なるメソッドであり、グローバル関数のようなものはありません)が呼び出されると、変数はグローバルコンテキストで検索されます。したがって、変数を識別します。
ただし、内部関数が内部にある関数がある場合、グローバル変数の識別は、最初に関数スコープでチェックされ、次にグローバルスコープでチェックされます。変数が関数変数の場合。次に、変数は常に関数実行コンテキスト(EC)に存在します