JavaScriptで変数を宣言する方法には、letとvarがあります。これらはどちらも変数を宣言するためのキーワードですが、実は大きな違いがあります。この記事では、letとvarの違いについて解説します。
まず、varは関数スコープであるのに対して、letはブロックスコープです。関数スコープとは、変数を宣言した関数内で有効であるということです。一方、ブロックスコープとは、変数を宣言したブロック(中括弧で囲まれた範囲)内でのみ有効であるということです。つまり、letで宣言した変数は、そのブロック内でしか使えないということです。
以下の例を見てみましょう。
function example() {
var x = 1;
if (true) {
var x = 2;
console.log(x); // 2が出力される
}
console.log(x); // 2が出力される
}
この場合、xはvarを使って宣言されています。ifブロックの内側で再度宣言されているため、console.log(x)の出力は2となります。そして、ifブロックの外側でもconsole.log(x)が呼ばれているため、再度2が出力されます。
一方、letを使った場合はどうでしょうか。
function example() {
let x = 1;
if (true) {
let x = 2;
console.log(x); // 2が出力される
}
console.log(x); // 1が出力される
}
この場合、ifブロック内で宣言されたxは別の変数として扱われます。そのため、最初のconsole.log(x)の出力は2となりますが、ifブロックの外側のxは異なる変数であり、値は1となります。
以上のように、letとvarの違いはスコープの扱い方にあります。可能であればletを使い、varを使う必要がある場合は注意深くスコープを考えて使うようにしましょう。