今回は、JavaScriptプログラミングでよく聞く「スコープ」について。
簡単にまとめました。
スコープとは?
スコープとは、関数や変数が使える有効範囲のことです。
関数や変数はどこまでもアクセスできる訳ではなく、使える範囲が決まっているのです。
なぜスコープが必要なのか?
スコープがあることによって、関数や変数の有効範囲以外への影響を防ぐことが出来ます。
有効範囲が決まっていることで、コードの修正がしやすかったり、エラーチェックもやりやすくなります。
スコープの種類
スコープは2種類あります。
サンプルプログラムを見ながら見ていきましょう。
グローバルスコープ
グローバルスコープとは、どこからでもアクセスできて有効なスコープのことです。
以下のコードを見ましょう。
var name1 = "グローバルスコープです"; function test() { var name2 = "関数のスコープです"; if(true) { let name3 = "ブロックスコープです"; } } console.log(name1); // →グローバルスコープです
上記の「name1」の変数は、どこからでもアクセスできるグローバルスコープです。
そして、試しにconsoleで表示してみると、「グローバルスコープです」としっかり表示されます。
ローカルスコープ
ローカルスコープとは、グローバルスコープ以外のスコープのことです。
そしてローカルスコープはさらに、関数スコープとブロックスコープに分けられます。
関数スコープとは、関数(function)ごとに作られるスコープ。
ブロックスコープは、ブロック({})ごとに作られるスコープのこと。
それでは以下のコードを見てみましょう。
var name1 = "グローバルスコープです"; function test() { var name2 = "関数のスコープです"; if(true) { let name3 = "ブロックスコープです"; } } console.log(name2); // →エラーになる console.log(name3); // →エラーになる
まずname2は関数の中で宣言されている変数になるので、関数の外でconsoleを表示してもエラーになります。
そして、name3もブロック({})の中で宣言されている変数になるので、こちらも関数の外でconsoleを表示してもエラになります。
コードを見ると、「グローバルスコープ」と「ローカルスコープ」の違いが分かるでしょう。
まとめ
以上が、スコープについてでした。
JavaScriptのプログラミングをする際に必ず必要な知識になってくるので、是非理解しておきましょう。