プレゼンテーションシナリオ: スライド28、29、30

スライド28、29、30では、JavaScriptの変数宣言キーワードについて説明します。

JavaScriptはvarletconstなどのキーワードを使用して変数を宣言します。

var(古い、あまり使われない)

varはJavaScriptで変数を宣言する古い方法です(ES6以前から存在)。

varで宣言された変数は関数スコープを持ちます({}のペアに制限されません)。

プログラムを実行すると、JSは自動的にコードを実行する前にvarの宣言をスコープの先頭に移動します(これをホイスティングと呼びます)が、初期値はデフォルトでundefinedです。

例:

var city = "Ho Chi Minh";
console.log(city); // Ho Chi Minh

var{}の外でも存在し使用できるため、現代のコードではvarはあまり使われず、代わりにletまたはconstが使用されます。

let(新しい、推奨)

letは、JavaScriptの新しいキーワードです(2015年、ES6で登場)。varの代わりに変数を宣言するために使用されます。これはvarの多くの欠点を克服します。

変数がプログラム内で存在し使用できる範囲(スコープ):

  • letで変数を宣言すると、その変数は宣言された{ ... }のペアの内部でのみ存在します。
  • { }の外に出ると、その変数は使用できなくなります。
  • varを使用すると、変数は{ }の外でも存在し使用できます。

例:

function demo() {
    var x = 1;  // var = function scope
    let y = 2;  // let = block scope
}
console.log(x); // 1
console.log(y); // Error

let{ }ブロック内でのみ有効なので、関数の外(または宣言範囲の外)では変数yは存在しません → console.log(y)を呼び出すとReferenceErrorが発生します。

const(新しい、推奨)

constは、JavaScriptで定数を宣言するために使用されるキーワードです。つまり:一度変数に値を代入すると、その値を変更することはできません

constを使用する際のルール:

  • constでは、宣言時に値を代入する必要があります。そうしないとエラーが発生します。
  • ブロックスコープ({}内の範囲)を持ちます。つまり、letと同様に、constで宣言された変数は、宣言された{ ... }のペアの内部でのみ存在し使用できます。そのブロックの外では変数は存在しなくなります
  • 再宣言(redeclare)または再代入(reassign)はできません。

constで変数を宣言すると、その変数を別の値に再代入することはできません。ただし、ObjectまたはArrayの場合、constは:

  • 変数を再代入できません。つまり、新しい値で変数を上書きすることはできません。
  • ただし、内部のコンテンツを変更(追加、編集、削除)することは可能です。

例:

function demo() {
    const x = 10;
    x = 20;  // ❌ Error: cannot reassign a const variable

    const arr = [1, 2, 3];
    arr[0] = 99;    // ✅ allowed: modify element inside array
    arr = [4, 5];   // ❌ Error: cannot reassign the whole array
}

このように、constでは変数xに値を再代入することはできませんが、配列の場合は内部の要素を変更でき、配列全体を新しく再代入することはできません。