🌐

Javascript基礎Ⅱ

2022/10/09に公開

スコープ

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

  • グローバルスコープ
  • スクリプトスコープ
  • 関数スコープ
  • ブロックスコープ
  • モジュールスコープ
let  a= 0;
var b = 0;
function c(){}


グローバルスクリプト、スクリプトスコープ

Scriptには
let const を定義すると
a:0 が見える

Global (Windowオブジェクトが格納されている varやfunctionで定義した場合は
b: 0
c: f c()

let  a= 0;
var b = 0;
function c(){}

//結果は同じ windowオブジェクトがグローバルスコープの為
//グローバルコンテキストは省略できる
console.log(window.b);
console.log(b);

関数スコープ、ブロックスコープ

関数スコープ


function a() {
  let b = 0;
  console.log(b);
}

a();

//--------------------------
//エラーが出る、関数の中のみ取得が可能だから
//スコープの外で読んでいる為 console.log(b);

function a() {
  let b = 0;
}
  console.log(b);
a();

### ブロックスコープ
{}で囲むことをいう

function{}は
functionと定義している為ブロックスコープではない

変数の宣言では、 let, const を使用すること

{
  let c = 1;
  console.log(c);
}

//--------------------------
//エラーが出る
{
  let c = 1;
}
 console.log(c);
 

### レキシカルスコープ
コードをかく場所によって参照できる変数が変わるスコープのこと!

コードをき誦すした時点で決定する為静的スコープともいう3

let a = 2;

function fn1() {
  let b = 1;
  function fn2() {
    let c = 3;
  }
  fn2();
}
fn1();
 

グローバルスコープ

  • a
  • fn1
    関数スコープ(fn1)※グローバルスコープ
    • b
    • fn2
      関数スコープ(fn2) ※グローバルスコープ,関数スコープ(fn1)
      • c

レキシカルスコープまとめ

Discussion