JavaScript スコープ
- 前のページ JS エラーハンドリング
- 次のページ JS ヒョースティング
スコープは、アクセス権を持つ変数の集合を指します。
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 の変数の有効期限はその作成時から始まります。
ローカル変数は関数が完了したときに削除されます。
グローバル変数はページを閉じたときに削除されます。
関数の引数
関数の引数も関数内のローカル変数です。
- 前のページ JS エラーハンドリング
- 次のページ JS ヒョースティング