JavaScriptでの事前解析(変数プロモーション)の概要

  本日、XiaoqianはJavaScriptの事前分析(変数プロモーション)を紹介します。事前分析と変数事前分析、および関数事前分析とロードプロセスとは何かから学びます(注:ここでは、ES5での事前分析について説明しています)。

  構文解析とは

  まず第一に、コードの実行には間違いなく実行環境が必要であり、ブラウザーはjavaScript実行用のグローバルスコープウィンドウを提供します。ただし、javaScriptが実行される前に、事前に解析されます。これは、変数プロモーションとも呼ばれます。事前分析は、次の2つの部分に分けることができます。

  -宣言(declare):var a;宣言を理解するために、代入なしで変数を宣言するだけです。

  -定義(定義済み):a = 100;定義は、この変数に値を割り当てることと同じです。

  javaScriptを実行する前に、ブラウザはグローバルスコープ内のすべてのvarおよびfunctionキーワードを事前に解析します(varおよびfunctionキーワードが含まれていることに注意してください)。そのため、変数の事前分析を学習するために事前解析を学習します。理由関数の分析と事前分析の場合、変数の事前分析と関数の事前分析の間には、次のような特定の違いがあります。

  -var:事前分析中に宣言するだけで、定義しない

  -機能:事前分析時に宣言+定義が完了している

  変数の事前分析

  今、次のコードがあります:

01

  これが、var a = 10を確認する前、出力aに進む前に、エラーを報告せずに未定義を出力した理由です。割り当てなしで変数を宣言することは未定義です。

  関数の事前分析とロードプロセス

  先ほど、関数が事前に解析されると、宣言と定義が完了したと言いましたが、今では次のコードがあります。

02

  まず、関数のロードプロセスを見てみましょう。

  1.関数が事前に解析されると、宣言+定義が完了します。

  2.関数は参照データ型であるため、新しいヒープメモリスペースが開かれ、関数は文字列の形式で格納され、xxxfff000などのメモリアドレスがこのヒープメモリスペースに割り当てられます。

  3.関数が呼び出されると、新しいプライベートスコープが開かれ、関数本体の内容が上から下に順番に実行されます。

  4.関数の各呼び出しは互いに独立しており、関数の実行後に自動的に破棄されます

  図に示すように、誰もがロードプロセスを理解すると便利です。

03

  上の図から、関数が高度で事前分析されていることが分析できます。事前分析の時点で、宣言+定義が完了し、関数を格納するためのヒープメモリスペースが開かれています。文字列の形式で、このヒープメモリが割り当てられます。メモリアドレスは、使用時に見つけるのに便利です。現時点では、関数は文字列の形式で格納されているため、関数定義関数を使用することはできません。呼び出さずに実行されます。

  呼び出したところ、新しいプライベートスコープが開かれていることがわかりました。関数本体は上から下に実行され、各呼び出しは新しいプライベートスコープを形成するため、互いに独立しており、各プライベート関数が実行されます。は自動的に破棄されます。これは、ブラウザに組み込まれているガベージコレクションメカニズムです。これにより、パフォーマンスの最適化が保証されます。

  この記事はQianfengEducationからのものです、転載のソースを示してください。

おすすめ

転載: blog.51cto.com/15128702/2678134