ブロックスコープ
`let`と`const`はブロックスコープですが、`var`は関数スコープです。ブロックスコープの変数は、定義されたブロック内でのみ存在します。
`var`の関数スコープは、`for`ループなどで宣言した変数がループの外からでもアクセスできてしまう問題がありました。これにより、意図しない変数の上書きや参照が発生しがちでした。`let`と`const`のブロックスコープは、変数の有効範囲を最小限に留めることができるため、より安全で予測可能なコードを書くことができます。
`let`と`const`はブロックスコープですが、`var`は関数スコープです。ブロックスコープの変数は、定義されたブロック内でのみ存在します。
`var`の関数スコープは、`for`ループなどで宣言した変数がループの外からでもアクセスできてしまう問題がありました。これにより、意図しない変数の上書きや参照が発生しがちでした。`let`と`const`のブロックスコープは、変数の有効範囲を最小限に留めることができるため、より安全で予測可能なコードを書くことができます。
// varは関数スコープなのでブロックの外からアクセスできる
{
var c = 1;
}
console.log(c); // Prints 1// constとletはブロックスコープなのでエラーになる
{
let a = 1;
const b = 1;
}
console.log(a); // ReferenceError
console.log(b); // ReferenceError