ホームページ  >  記事  >  ウェブフロントエンド  >  js変数のプロモーションと関数宣言の事前解析例の詳細な説明

js変数のプロモーションと関数宣言の事前解析例の詳細な説明

零下一度
零下一度オリジナル
2017-06-29 09:17:491423ブラウズ

1. まず関数のスコープを理解します

JavaScript では、変数の定義はコード ブロックではなく、関数のスコープで定義されます。つまり、変数が関数内で定義されている場合、その変数は関数の外部からは見えません。また、変数が if や for などのコード ブロック内で定義されている場合は、コード ブロックの外側でも表示されます。さらに、JavaScript では、「グローバル変数」という用語は、特定の関数内の変数を指す「ローカル変数」とは対照的に、すべての関数の外部で定義された変数を指します。このうち、関数内のコードは、独自のローカル変数にアクセスするのと同じようにグローバル変数にアクセスできますが、その逆はできません。

2. 変数のプロモーション

実際には、JavaScript コードが実行される前にコンパイル段階があります。コンパイル後、上から下まで 1 行ずつ解釈されて実行されます。変数の昇格はコンパイル フェーズ中に発生し、変数と関数の宣言をスコープの先頭に昇格させます。 (コンパイル フェーズのタスクの 1 つは、変数をそのスコープに関連付けることです)。
したがって、コード var a =2; の場合、コンパイラは 2 行のコード var a; a = 2; を認識します。最初のステートメントはコンパイル フェーズ中に処理されます。 2 番目のステートメントは代入ステートメントであり、実行フェーズ中に処理されます。

1. 昇格された部分は変数宣言のみであり、代入ステートメントと実行可能コードのロジックはそのまま残ります
2. 昇格では、変数宣言がグローバル スコープではなく、変数が配置されている変数スコープの先頭にのみ昇格されます。
3. 変数宣言と関数宣言の両方が昇格されますが、関数宣言が最初に昇格され、次に変数宣言が続きます。
4. 関数宣言の場合、同じ関数変数宣言が定義されている場合、後から定義された宣言が前の宣言を上書きします


以上がjs変数のプロモーションと関数宣言の事前解析例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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