letの概要
| ブロックスコープ変数の宣言 JavaScript予約語 | ||
|
let 概要 わかりやすく説明 |
||
|
letの基本的な使い方
以下は、letを使った基本的な例です。
// letを使った変数宣言
let x = 10; // 変数xを宣言し、値10を代入
console.log(x); // 10
x = 20; // 再代入が可能
console.log(x); // 20
// 再宣言はエラー
let x = 30; // エラー: Identifier 'x' has already been declared
letで宣言された変数は再代入が可能です。- 同じスコープ内での再宣言はエラーとなります。
ブロックスコープとlet
以下の例は、letがブロックスコープを持つことを示しています。
// letのブロックスコープ
{
let blockScoped = "この変数はブロック内でのみ有効";
console.log(blockScoped); // この変数はブロック内でのみ有効
}
console.log(blockScoped); // エラー: blockScoped is not defined
// ループ内でのスコープ
for (let i = 0; i < 3; i++) {
console.log(i); // 0, 1, 2
}
console.log(i); // エラー: i is not defined
letは変数のスコープをブロック内に限定します。- ループの中で宣言された変数も、ループの外ではアクセスできません。
Temporal Dead Zone(TDZ)
letは巻き上げされますが、変数が宣言される前にアクセスするとエラーになります。これをTemporal Dead Zone(TDZ)と呼びます。
// Temporal Dead Zoneの例
console.log(myVar); // エラー: Cannot access 'myVar' before initialization
let myVar = "初期化された変数";
console.log(myVar); // 初期化された変数
- 変数はスコープの先頭で巻き上げられますが、宣言される前に使用することはできません。
- TDZは、誤ったコードの実行を防ぐための仕組みです。
注意点
- 再代入可能:
letで宣言された変数は再代入できますが、再宣言はできません。 - ブロックスコープ:
letは変数のスコープをブロック内に限定します。varの関数スコープとは異なります。 - 巻き上げとTDZ:
letで宣言された変数は巻き上げられますが、TDZの間は使用できません。
よくある質問
- Q:
varとletの違いは何ですか? - A:
varは関数スコープを持ち、再宣言が可能ですが、letはブロックスコープを持ち、再宣言はできません。 - Q: なぜ
letを使うべきですか? - A:
letを使用することで、スコープをより厳密に管理でき、不具合を防ぐことができます。 - Q:
constとの違いは何ですか? - A:
letは再代入可能ですが、constは再代入できません。constは不変の値を扱う場合に使用します。
まとめ
letは、JavaScriptで安全に変数を宣言し、管理するための重要なキーワードです。varの代わりに使用することで、スコープ管理が容易になり、予期しないバグを防ぐことができます。
- ブロックスコープを持ち、再代入が可能です。
- 再宣言やTDZに注意する必要があります。
- スコープを明確にすることで、可読性と安全性が向上します。