ホームページ >ウェブフロントエンド >jsチュートリアル >javascript変数スコープと巻き上げを分類します
JavaScript変数スコープと巻き上げの理解:包括的なガイド
JavaScriptは、グローバルとローカルの2つの主要な範囲タイプを採用しています。ローカルスコープは、さらに機能スコープ(
var
)に細分化されます。
let
const
宣言は関数の上部に巻き上げられ、var
関数宣言は完全に巻かれており、標準の巻き上げルールに付着する関数式とは異なり、定義の前に呼び出しを有効にします。
let
JavaScriptのスコーピングおよび巻き上げルールの適切な理解と適用は、一般的な変数関連のバグを防ぎ、コードの信頼性を高めます。
const
は唯一のオプションでしたが、ES6以前、、はより厳格なルールを提供し、コードの信頼性を向上させます。
JavaScriptには、グローバルとローカルの2つの主要なスコープがあります。ローカルスコープは、さらに関数スコープ(の場合)およびブロックスコープ(var
およびlet
の場合)に分岐します。 関数スコープは、ブロックスコープの特殊な形式です
const
var
グローバルスコープ:let
const
var
let
便利ですが、潜在的な競合と上書きにより、一般的にグローバル変数は落胆します。
const
ブロック内で宣言された変数(例えば、、
、関数)は、そのブロックのローカルです。 関数は、、
、および<code class="language-javascript">// Global Scope const name = "Monique"; function sayHi() { console.log(`Hi ${name}`); } sayHi(); // Hi Monique</code>で宣言された変数の範囲を定義します。 コードブロックは、
および
のスコープのみを定義します。は関数スコープに制限されています
let
およびconst
ブロックスコープを導入し、各ブロックの新しいローカルスコープを作成します。スタンドアロンブロックは、スコープも定義します:
<code class="language-javascript">// Global Scope const name = "Monique"; function sayHi() { console.log(`Hi ${name}`); } sayHi(); // Hi Monique</code>
ネストされたスコープが可能であり、内側のスコープは外側のスコープからの変数にアクセスしますが、その逆ではありません。
スコープの視覚的メタファー:
世界を想像してみてください。国には国境(スコープ)があり、国内の都市には独自のスコープなどがあります。 グローバルな範囲は、すべてを網羅する世界の海のようなものです。 この類推は、スコープの仕組みを示しています。変数の検索は、最も内側のスコープで始まり、発見されるかエラーが発生するまで外側に進みます。このルックアップは、語彙(静的)スコーピングと呼ばれます 巻き上げ:JavaScriptの「ホイスト」メカニズムは、コンピレーション中に変数と関数宣言をスコープの上部に移動します。 ただし、宣言のみが巻かれています。割り当てはそのまま残っています。 これを考えてみてください:
出力は
<code class="language-javascript">{ // standalone block scope }</code>
undefined
が宣言されているが、まだ割り当てられていないためです。 エンジンはそれを次のように解釈します:state
<code class="language-javascript">console.log(state); // undefined var state = "ready";</code>
およびlet
変数も巻き上げられますが、初期化されていないため、宣言の前に「時間的デッドゾーン」(TDZ)が生じます。 TDZ内でそれらにアクセスすると、a const
。ReferenceError
関数と巻き上げ:
関数宣言は完全に巻かれており、定義の前に通話を許可します。ただし、関数式は、標準の巻き上げルールに従います(宣言が掲げられ、割り当てが残ります)。 クラスは、
変数と同様に動作します。<code class="language-javascript">var state; // hoisted console.log(state); state = "ready";</code>
let
主要な違いとベストプラクティス:
:function-scoped。
var
およびlet
すべての宣言は巻かれています。const
let
を使用)。
const
let
JavaScriptのスコーピングと巻き上げを理解することにより、開発者はよりクリーナー、より予測可能で、エラーが発生しやすいコードを書き込むことができます。 コードの組織と保守性を向上させるために、ブロックスコープ(const
および)を活用することを忘れないでください。以上がjavascript変数スコープと巻き上げを分類しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。