ホームページ  >  記事  >  ウェブフロントエンド  >  Javascriptスコープchain_javascriptスキルの8つのポイントまとめ

Javascriptスコープchain_javascriptスキルの8つのポイントまとめ

WBOY
WBOYオリジナル
2016-05-16 17:10:241527ブラウズ

1. JavaScript 関数のスコープ チェーンは、定義時スコープ チェーンと実行時スコープ チェーンに分割されます。

2. 関数が定義されるとき、その定義スコープ チェーン [[scope]] は次の規則に従います。 関数の定義スコープ チェーン [ [スコープ]] は常に、それが配置されている外部関数の実行スコープ チェーンです。

3. グローバル関数の定義スコープ チェーンには、ウィンドウの属性のみが含まれます。

4. 関数の実行スコープ チェーンは、常に、定義スコープ チェーンの先頭にある現在のアクティブ オブジェクト (これ、引数、パラメーター、およびローカル変数を含みます) にプッシュされます。

5. 関数の実行時、変数のアドレス指定は常にスコープ チェーンの先頭から下方向に検索されるため、グローバル変数のアドレス指定速度は最も遅くなります。

6. 内部関数が実行されるときも、そのスコープ チェーン全体にアクセスできます。これが、クロージャが実行時に完成した外部関数によって定義された変数にアクセスできる理由です。

7. 関数の実行中に with ステートメントが検出されると、with で指定されたオブジェクトのすべての属性がスコープ チェーンの先頭として一時的にプッシュされます。

8. 関数の実行で catch が発生すると、catch で指定されたエラー オブジェクトがスコープ チェーンの先頭に一時的にプッシュされます。

理解を深めるために例を示してスコープ チェーンを描いてみましょう:

そのようなコードがあります:

コードをコピー


コードは次のとおりです:

}


この関数 Closure によって生成された匿名クロージャを呼び出し、assignEvent が実行されたときのスコープ チェーンと Closure が定義されたときのスコープ チェーンを示す次の図を描画します。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。