JavaScript スコープ

スコープは、アクセス権を持つ変数の集合を指します。

JavaScript 関数スコープ

JavaScript にはスコープの種類が二つあります:

  • ローカルスコープ
  • グローバルスコープ

JavaScript には関数スコープがあります:各関数は新しいスコープを生成します。

スコープはこれらの変数のアクセス可能性(可視性)を決定します。

関数内で定義された変数は、関数の外からはアクセスできません(見えません)。

ローカル JavaScript 変数

JavaScript 関数内で宣言された変数は、関数のローカル変数

ローカル変数のスコープは局部的:関数内でのみアクセスできます。

// このコードは carName 変数を使用できません
function myFunction() {
    var carName = "porsche";
    // このコードも carName 変数を使用できます
}

実際に試してみてください

ローカル変数は関数内で認識できるため、異なる関数で同じ名前の変数を使用できます。

関数の開始時にローカル変数が作成され、関数が完了するとそれらは削除されます。

グローバル JavaScript 変数

関数の外で宣言された変数は、グローバル変数

グローバル変数のスコープはグローバルの:すべてのスクリプトや関数がアクセスできます。

var carName = "porsche";
// このコードは carName 変数を使用できます
function myFunction() {
    // このコードも carName 変数を使用できます
}

実際に試してみてください

JavaScriptの変数

JavaScript では、オブジェクトや関数も変数です。

スコープは、コードの異なる部分から変数、オブジェクト、関数へのアクセス可能性を決定します。

自動グローバル

宣言されていない変数に値を割り当てると、その変数は自動的にグローバル変数。

このコードはグローバル変数 carName を宣言し、関数内で値が割り当てられた場合でもそのままです。

myFunction();
// このコードは carName 変数を使用できます
function myFunction() {
    carName = "porsche";
}

実際に試してみてください

厳格モード

すべての現代ブラウザは、JavaScriptを「厳格モード」で実行することをサポートしています。

厳格モードの使用方法について、このチュートリアルの後の章でさらに詳しく学びます。

「厳格モード」では、自動的にグローバル変数が作成されません。

HTMLのグローバル変数

JavaScriptで、グローバルスコープは完全なJavaScript環境を形成します。

HTMLでは、グローバルスコープは window です。すべてのグローバル変数は window オブジェクトに属します。

var carName = "porsche";
// このコードは window.carName を使用できます

実際に試してみてください

警告

意図的にしない場合は、グローバル変数を作成しないでください。

あなたのグローバル変数(または関数)は window 変数(または関数)をオーバーライドできます。

window オブジェクトを含むすべての関数が、グローバル変数と関数をオーバーライドできます。

JavaScript の変数の有効期限

JavaScript の変数の有効期限はその作成時から始まります。

ローカル変数は関数が完了したときに削除されます。

グローバル変数はページを閉じたときに削除されます。

関数の引数

関数の引数も関数内のローカル変数です。