プレゼンテーションシナリオ: スライド76、77、78

スライド76、77、78では、JavaScript Scope(関数内の変数のスコープ)について説明します。

Scopeとは?

Scope(スコープ) = 変数がアクセス可能(使用可能)な場所です。簡単に言うと:変数が存在する場所の「制限」があります。

これにより変数名の衝突を回避し、コードを明確に保つことができます。

JavaScriptのスコープの種類

a. Global Scope(グローバルスコープ)

すべての関数の外で宣言された変数 → ファイル内のどこでも使用できます。

例:

let globalVar = "I am global";

function showGlobal() {
    console.log(globalVar); // OK
}

showGlobal();
console.log(globalVar); // OK

変数globalVarは関数の外で宣言されているため、関数showGlobal()内でも関数の外でも使用できます。

b. Function Scope(関数スコープ)

関数内で宣言された変数 → その関数内でのみ存在し使用できます。つまり、関数内の変数は関数内でのみ使用でき、関数の外では変数は効果がありません。

例:

function testScope() {
    let localVar = "I am local";
    console.log(localVar); // OK
}

testScope();
console.log(localVar); // ❌ Error: localVar is not defined

変数localVarは関数testScope()内にのみ存在します。関数の外に出ると、この変数は存在しなくなるため、エラーが発生します。

c. Block Scope(ブロックスコープ)

letconstでは、変数は宣言された{ }のペアの内部でのみ存在します。

(逆に、varにはblock scopeがなく、function scopeのみがあります)。

例:

{
    let a = 10;
    const b = 20;
    var c = 30;

    console.log(a); // 10
    console.log(b); // 20
    console.log(c); // 30
}

console.log(c); // 30 (varにはblock scopeがない)
console.log(a); // ❌ Error: a is not defined
console.log(b); // ❌ Error: b is not defined

変数abletconstを使用)はblock { }内にのみ存在し、blockの外ではエラーが発生します。

変数cvarを使用)にはblock scopeがないため、blockの外でも使用できます。

d. Nested Scope(ネストされたスコープ)

スコープはネストできます。nested scopeについて詳しく理解するには、w3schoolを参照してください。

以上で、JavaScriptのScopeについて、Global Scope、Function Scope、Block Scope、Nested Scopeを含む説明を終わります。