MENU

JavaScript スコープ(Scope)を理解しよう

JavaScriptのスコープとは、変数の有効範囲のことです。

グローバルスコープ、ローカルスコープ、ブロックスコープの3つがありますので、順に見ていきましょう。

変数がどこで宣言されているかによって、その変数にアクセスできる場所が異なります。

目次

1. グローバルスコープ

//GLOBAL SCOPE
let fruit = 'apple';
let fruitNum = 5;

console.log(fruit, fruitNum);//GLOBAL SCOPEの結果

グローバルスコープとは、スクリプト全体でアクセス可能なスコープのことです。

グローバルスコープで宣言された、fruitとfruitNumは、どこからでもアクセス可能と言うことになります。

let fruit = 'apple';
let fruitNum = 5;

function store() {
  fruit = 'peach';
  fruitNum = 10;
}
store();

console.log(fruit, fruitNum);//store();が実行され、書き換えが行われた

どこからでもアクセス可能ということですから、例えば関数からアクセスしてfruitの名前とfruitNumの数を書き換えることも可能です。

この場合、コンソールには、『peach 10』が表示されます。

2. ローカルスコープ

ローカルという名前が付いている通り、ローカルスコープ内で定義された変数は、その関数の実行中のみ有効です。

//GLOBAL SCOPE
let fruit = 'apple';
let fruitNum = 5;

function store() {
  //LOCAL SCOPE like a private party here!
  let fruit = 'banana';
  let fruitNum = 50;
  console.log(fruit, fruitNum); //LOCAL SCOPEの結果...コンソールには、banana 50
}
store();

console.log(fruit, fruitNum); //GLOBAL SCOPEの結果...コンソールには、apple 5

わかりやすくするため、グローバルスコープでfruitとfruitNumを宣言し(こちらはどこからでもアクセス可能)、その後、関数内でfruitとfruitNumを宣言しました。

この場合、変数名は同じですが、関数内の変数はその関数内でのみ有効なため、グローバルスコープの結果には影響はありません。

DevEdが「ローカルスコープは、招待状がないと入れないプライベートパーティーのようなもの」と言っていて、うまいこと言うなぁと思いました。

3. ブロックスコープ

ブロックスコープは、if文やforループ内のブロック内で変数を定義するために使用されます。これらの変数はブロック内でのみ有効です。

DevEd風に言うのなら、「Another private party! (もう一つのプライベートパーティー)」ですね!

//GLOBAL SCOPE
let fruit = 'apple';
let fruitNum = 5;

if (true) {
  //BLOCK SCOPE
  let fruit = 'kiwi';
  let fruitNum = 20;
  console.log(fruit, fruitNum); //BLOCK SCOPEの結果...コンソールには、kiwi 20
}

console.log(fruit, fruitNum); //GLOBAL SCOPEの結果...コンソールには、apple 5

こちらもグローバルスコープでfruitとfruitNumを宣言し(こちらはどこからでもアクセス可能)、その後、if文内でfruitとfruitNumを宣言しました。

if文内の変数は、ブロック内でのみ有効のため、グローバルスコープの結果には影響はありません。

まとめ

とても簡単なコードで、3つの違いを説明しました。グローバルスコープで宣言された変数は、どこでも使える、ローカルとブロックスコープ内で宣言された変数は、それぞれの中でだけ有効である、ということですね。

やはり、動画を見てコードを書き写すだけではなく、その後、ブログで自分なりに説明してみると理解が深まる気がします。

理解していないことはコードが書けない、という当たり前のことに気づきました。

次からはDOMですね。こちらも引き続き学習していきます。

応援クリックいただけると嬉しいです

にほんブログ村 デザインブログへ にほんブログ村 IT技術ブログへ
目次