edubun
日本語

変数:let と const

変数は値につける名前です。let score = 10 と書くと、別の値を入れるまで score という語は 10 を表します。

値に名前をつけて何度も使う

ここまでの値は、どれも console.log に直接書きこんで、それきり忘れていました。実際のプログラムは物事を覚えておく必要があります。プレイヤーの得点、かごに入った商品、だれかが入力した名前などです。変数は、値を入れておく名前つきの箱です。一度作れば、その値が必要な場所でいつでも名前を使えます。

let score = 10;
console.log(score);        // 10
console.log(score + 5);    // 15

let score = 10; という行は二つのことをしています。キーワード let が score という新しい変数を宣言し、= 10 がそこに値 10 を入れます。ここでの等号は、数学のような「等しい」という意味ではありません。「右側の値を左側の名前に入れる」という意味です。プログラマーはこれを代入と呼びます。あとで score が引用符なしで出てくると、JavaScript は箱を探して、中の値を使います。

let で値を変える

let で宣言した変数には、あとで新しい値を入れられます。名前、等号、新しい値の順に書きます。変数はもうあるので、今度は let をつけません。

let score = 10;
score = 25;
console.log(score);        // 25
score = score + 5;
console.log(score);        // 30

score = score + 5; という行は数学としてはありえませんが、命令として読めば意味が通ります。JavaScript はまず右側、つまり今の score に 5 を足した値を評価し、30 を得ます。そして 30 を score に入れ直します。古い値は消えます。変数を読み、更新した値をそこに入れ直すこのパターンで、プログラムは数を数え、合計を出し、変わっていくものを追いかけます。

変わらない値には const

キーワード const も変数を宣言しますが、すぐに値を入れなければならず、あとから新しい値を代入することはできません。代入しようとすると、プログラムは TypeError: Assignment to constant variable で止まります。このエラーは役に立ちます。一週間の日数や税率のように変わるはずのない値を const で宣言しておけば、プログラムのほかの場所のまちがいで、その値が気づかないうちに上書きされることはありません。

const daysInWeek = 7;
console.log(daysInWeek * 4);   // 28
// daysInWeek = 8;  と書くと TypeError で止まる

多くのスタイルガイドがすすめるよい習慣は、ふだんは const を使い、値が変わるとわかっているときだけ let に切りかえることです。Web 上のコードでは、古いキーワード var を見かけることもあります。今でも動きますが、規則がゆるく、思いがけないバグの原因になるので、このコースでは let と const だけを使います。

名前の決まり

変数名には文字、数字、アンダースコア _、ドル記号 $ を使えますが、数字で始めることはできず、空白も入れられません。ですから total2 はよくても 2total はだめです。名前は大文字と小文字を区別するので、score と Score は別の変数です。let、const、if、for などいくつかの語は言語が予約しているので、名前には使えません。いくつかの語を組み合わせた名前は、JavaScript のプログラマーはふつうキャメルケースで書きます。最初の語は小文字にし、二つ目からの語は大文字で始めます。totalPrice や daysInWeek のようにです。値の意味がわかる名前を選びましょう。読む人にとって、price は x よりずっと多くのことを伝えます。

宣言だけで空のとき、早く使いすぎたとき

値をつけずに let answer; と書くと、変数はできますが、何かを代入するまでは undefined が入っています。let や const の変数を、宣言より上の行で使うとエラーになります。ReferenceError: Cannot access 'answer' before initialization です。一度も宣言していない名前を使うと ReferenceError: answer is not defined になります。どちらのメッセージも、実際にすることは同じです。つづりを確かめ、宣言が先にあるかを確かめましょう。

let 名前 = 値; はあとで変えられる。const 名前 = 値; は変わらない。

変数値を入れておく名前
宣言するlet か const で変数を作る
代入= で値を入れること
let値を変えられる変数を宣言する
const再代入できない変数を宣言する
キャメルケースtotalPrice:二つ目からの語を大文字で始める
undefined宣言した変数に値が入る前の中身
予約語let や if のように、名前に使えない語
  1. 何が表示されますか?
    let x = 4;
    x = x + 3;
    console.log(x);
  2. 何が表示されますか?
    let n = 2;
    n = 10;
    n = n * 3;
    console.log(n);
  3. 何が表示されますか?
    let city = "Busan";
    console.log("city");
    • Busan
    • city
    • undefined
  4. 実行するとどうなりますか?
    const max = 5;
    max = 6;
    • max が 6 になる
    • TypeError: Assignment to constant variable で止まる
    • 何も起こらず、max はそのまま 5 になる
  5. 正しい変数名はどれですか?
    • 2ndPlace
    • second place
    • secondPlace
  6. 何が表示されますか?
    let total;
    console.log(typeof total);
  7. 何が表示されますか?
    let a = 5;
    let b = a;
    a = 9;
    console.log(b);
  8. score と Score は同じ変数ですか?
    • はい
    • いいえ
  9. 一時間の分数を入れるには、どのキーワードを使うべきですか?
    • const
    • let
    • var
  10. 何が表示されますか?
    let word = "hi";
    word = word + word;
    console.log(word);
ポイント
  • let 名前 = 値; は、変えられる変数を宣言する。
  • const 名前 = 値; は、再代入できない変数を宣言する。
  • = は「入れる」という意味で、「等しい」ではない。
  • x = x + 1 は x を読み、1 を足し、結果を入れ直す。
  • 名前:文字、数字、_ と $。数字で始めない。大文字と小文字を区別。キャメルケース。
このコースの出典 (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

確認日: 2026-10-17