let 宣言
最終更新:2026-10-13
let 宣言
| カテゴリ | 変数宣言 |
|---|
⚙️ 引数
| 变量名 | |
|---|---|
| 初始值 |
元の値を変更するか:いいえ(新しい値を返す)
💡 ヒント
⚠️ 警告
🌐 ブラウザ対応
| ブラウザ | |||||
|---|---|---|---|---|---|
| let | ✓ v49 | ✓ v12 | ✓ v44 | ✓ v10 | ✓ v36 |
| すべてのモダンブラウザで対応 | |||||
🏷️ 関連する文
💡 関連するケース
さらに多くのケースは近日公開予定です。
📚 関連チュートリアル
❓ よくある質問
Qlet と var の違いは何ですか?
A大きく分けて3点です。①スコープ(let はブロックスコープ、var は関数スコープで、グローバルオブジェクトに漏れることもあります)②再宣言(let は禁止、var は許可)③巻き上げ(let は一時的デッドゾーンに留まりエラーを投げますが、var は undefined を返します)です。
Qlet 宣言より前に変数を使うと、なぜエラーになるのですか?
Aスコープに入ってから let 宣言が実行されるまでの区間を一時的デッドゾーン(TDZ)と呼びます。変数は既に登録されていますが初期化されていないため、そこに触れると ReferenceError が投げられます。これは var が許していた「黙って undefined を返す」という見えにくいバグを防ぐための、意図的な設計です。
Qループ内では let が毎回異なる値になるのはなぜですか?
Alet で宣言したループ変数は、JavaScript がイテレーションごとに新しいコピーを作り、直前の値を引き継ぎます。そのため各クロージャは自分自身のイテレーションの値を捕まえます。var の場合は共有バインディングが1つだけなので、後から実行されるコールバックはすべて最後の値を見てしまいます。