変数 — let · const · var
変数 — let · const · var
🎯 このlessonを読み終えたら
このlessonを読み終えると、以下の3つを自信を持ってできるようになります。
- ▸✅
varがなぜ危険なのか (function scope · hoisting) - ▸✅ TDZ (Temporal Dead Zone) とは何か
- ▸✅ 再代入の可否に基づいた
const/letの選択方法
学習目標をチェックリストとして手元に置き、すべてに答えられるようになったらlessonを閉じてください。
変数とは何か
核心を一言で
変数 = 値を名前で保存する入れ物。JSには3つのキーワード — var·let·const — があり、歴史的な理由から共存しています。結論: まずconst、必要ならlet、varは絶対NG。
const — 一度決めたらおしまい
最もよく使うキーワード。変数の95%はconstで十分です。再代入は通常不要なのです。
> ⚠️ よくある誤解: constは再代入を禁止するだけで、内部の変更は可能です:
// obj = { other: "X" }; // ❌ TypeError: Assignment to constant variable
//
// 💡 const = "変数が指すアドレス" は変更不可
// オブジェクト内部のコンテンツは別の話 → 自由に修正可能
javascriptlet count = 0; // 🔓 変更可能な変数
for (let i = 0; i < 10; i++) { // i = 0,1,2,3,...,9
count = count + i; // 累積 (0+1+2+...+9)
}
console.log(count); // 45 ← 0+1+2+...+9 の合計
javascriptvar x = 10; // ❌
javascriptfunction example() {
if (true) {
// 🔲 ブロック開始 — { 内 }
let x = 10; // 📦 ブロック内でのみ有効
const y = 20; // 📦 ブロック内でのみ有効
var z = 30; // 🌐 var はブロック無視 → 関数全体で有効
}
// 🔲 ブロック終了 — } 外
console.log(z); // 30 ← ✅ var なので if 外からもアクセス可能
console.log(x); // 💥 ReferenceError: x is not defined
// (let はブロック内でのみ有効なので既に消滅)
}
example(); // ▶️ 呼び出すと上記のコードが実際に実行される!
javascript// camelCase — 推奨
const userName = "ホン・ギルドン";
const isActive = true;
const userList = [];
// PascalCase — クラス·コンポーネント
class User {}
function MyComponent() {}
// UPPER_CASE — 定数
const MAX_RETRIES = 3;
const API_URL = "https://api.example.com";
javascript// 99% の場合
const userName = "ホン・ギルドン";
// ループ·再代入が必要
let count = 0;
// var — 絶対 X
``
まずconst`を使い、本当に必要なときだけletに切り替えましょう。
⚡ 実際に試してみよう — const · let · var
🤖 AIにこう依頼してみよう
このlessonの概念を理解すれば、AIに具体的に指示できるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の第一歩です。
- ▸「このコードのvarをすべてconst/letに変換して」
- ▸「再代入の可否を分析してconstを優先に整理して」
- ▸「このコードでhoistingの問題が起きる可能性を診断して」
なぜこれがトークンを減らすのか
概念を知らないままAIの回答を受け取っても、「それって何ですか?」とまた聞き直さなければなりません。その「聞き直し」がトークンを消費します。概念を一度身につければ、会話が一度で終わります。