おはようございます。
今回は JavaScript の関数宣言とスコープに関してまとめて行きたいと思います。
スコープとは
スコープとは、実行中のコードが変数や関数を参照できる範囲のことを言います。
変数や関数が同じスコープ上に存在していれば参照することが出来ますが、異なるスコープに存在していた場合はお互いに参照することが出来ません。
このスコープにもいくつか種類があります。
スコープの種類
スコープにはグローバルスコープとローカルスコープの 2 種類が存在します。
更にローカルスコープは、関数スコープとブロックスコープに分類されます。それぞれどのようなものか解説していきます。
- グローバルスコープ
- ローカルスコープ
- 関数スコープ
- ブロックスコープ
グローバルスコープ
グローバルスコープとは、プログラム全体からアクセス可能なスコープのことです。
トップレベル(ブロック{}で囲まれていない箇所に書かれた箇所)で宣言された変数などはグローバルスコープを持ち、関数からも参照可能なものになります。
ブラウザのデベロッパーツールのコンソールから以下のコードを実際に実行してみて下さい。
// ブロックで囲まれていないトップレベルに記載された変数
var global_scope = 'global';
// トップレベルからのアクセス
console.log(global_scope); // global
// 関数内からの参照
function testFunc1() {
console.log(global_scope);
}
testFunc1(); // global
このグローバルスコープで参照できる変数は、window オブジェクトに格 納されます。
window オブジェクトとは、クライアントサイド JavaScript が起動するタイミング(ブラウザが起動した時点)で自動的に生成され、あとから格納されたグローバル変数やグローバル関数にアクセス出来るようになります。
windows オブジェクトはグローバルオブジェクトとも呼ばれます。先程作成した変数も window オブジェクトから参照出来るようになっています。
コンソールから試してみると先程作成した変数が window オブジェクトの配下に格納されていることが分かります。
なお、window オブジェクトは省略可能なので通常このように記述すことはありません。