let と var は何が違う?

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を使う必要がある場合は注意深くスコープを考えて使うようにしましょう。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
テーマ StackJimmy によって設計されています。