fc2ブログ

記事一覧

変数の有効範囲:スコープについて

前回は変数の宣言についてまとめましたが、今回はその変数の宣言はどの範囲まで有効なのかまとめたいと思います。
JavaScriptにおいて変数の宣言の有効な範囲はスコープと呼びます。
同じスコープにある変数は参照できますが、違うスコープにある変数は参照できません。
JavaScriptのスコープは主にグローバルスコープとローカルスコープに分けられます。
さらにローカルスコープは関数スコープとブロックスコープに分けられます。



グローバルスコープについて

グローバルスコープは関数などに属していないそのJavaScriptのどこからでも参照できる変数です。

var a = 1;
var b = 2;

var c = a + b; // 変数a,bを参照してcは3

function sum(){
    d = a + b; // 関数sumから変数a,bを参照してdは3
}



関数スコープについて

ローカルスコープのうち関数スコープは関数ごとに設定されるスコープです。
このスコープ内(つまり関数内)で変数を宣言するとその関数の中で参照できる変数となりますが関数の外からは参照できません。

function sum(){
    var a = 1;
    var b = 2;
    var c = a + b // 関数sum内の変数a,bを参照してcは3
}

var d = a + b; // 変数a,bは関数sumの関数スコープ内の変数なのでエラーとなる



ブロックスコープについて

ローカルスコープのうちブロックスコープは{}ごとに設定されるスコープです。
このスコープは変数宣言letやconstで宣言された変数に適用され{}内で参照できその外側からは参照されません。
ブロックスコープを適用した変数を使うことにより変数の参照する場所が分かりやすくなります。
また効率よくJavaScriptを動かしメモリなどのハードウェアの資源を有効に扱えます。

function sum(){
     {
         let a = 1;
         let b = 2;
         let c = a + b // {}の変数a,bを参照してcは3
     }

     let d = a + b; // 変数a,bは別の{}内の変数なのでエラーとなる
}
スポンサーサイト



コメント

コメントの投稿

非公開コメント

プロフィール

memomemoprobe1

Author:memomemoprobe1
FC2ブログへようこそ!

カウンター