BLOG

スコープについて

スコープについての用語などのメモ

スコープ

実行中のコードから値と式が参照できる範囲のこと

Javascriptには5種類のスコープがある

  • グローバルスコープ ※windowオブジェクト=グローバルスコープ
  • スクリプトスコープ ※一般的にはグローバルスコープと一緒
  • 関数スコープ
  • ブロックスコープ
    ※varは使えない
    ※varで宣言するとブロックスコープ外でも変数が出力されてしまう為非推奨
  • モジュールスコープ

レキシカルスコープ

コードを書く場所によって参照できる変数が変わるスコープ
実行中のコードからみた外部スコープ
どのようにしてスコープを決定するかの仕様のこと
コードを記述した時点で決定するため「静的スコープ」とも言う

これは参照される↓


let a = 2;
function fn1(){
    let b = 1;
    function fn2(){
        let c = 3;
        console.log(b);
    }
    fn2();
}
fn1();

これはエラーになる↓


let a = 2;
function fn1(){
    let b = 1;

}
fn1();

    function fn2(){
        let c = 3;
        console.log(b);
    }
    fn2();

※関数1のスコープ外ではbは参照されない

スコープチェーン

スコープが複数階層連なっている状態

クロージャー

レキシカルスコープの変数を関数が使用している状態

即時関数

関数定義と同時に一度だけ実行される関数
※IIFE とも訳される