JSの変数の種類は?

JavaScriptの変数

JavaScriptの変数:const、let、var

プログラミング言語には、文字列や数値などのデータに名前をつけることで、繰り返し利用できるようにする「変数」という機能があります。 JavaScriptでは、この「変数」を宣言するために、いくつかのキーワードが用意されています。 本稿では、JavaScriptの変数宣言で使用される `const`、`let`、`var` の3つのキーワードについて解説し、それぞれの違いと使い分けを明確にいたします。

変数宣言:const、let、var

JavaScriptでは、変数を宣言する際に、 `const`, `let`, `var` のいずれかのキーワードを使用します。
キーワード 説明
const 再代入不可の定数を宣言します。
let 再代入可能な変数を宣言します。(ブロックスコープ)
var 再代入可能な変数を宣言します。(関数スコープ)

1. const:再代入不可の定数

`const` キーワードは、再代入ができない定数を宣言するために使用します。 定数は一度値を代入すると、その後変更することはできません。

<script>
  const PI = 3.141592;
  console.log(PI); // 3.141592

  PI = 3; // エラー! const宣言された変数への再代入はできません。
</script>

2. let:再代入可能な変数(ブロックスコープ)

`let` キーワードは、再代入が可能な変数を宣言するために使用します。 `let` で宣言された変数は、宣言されたブロック(`{}` で囲まれた範囲)内でのみ有効です。

<script>
  let message = "こんにちは";
  console.log(message); // こんにちは

  if (true) {
    let message = "こんばんは"; // 別のブロックスコープ内なので、新しい変数が作成される
    console.log(message); // こんばんは
  }

  console.log(message); // こんにちは (if文の外なので、最初のmessage変数が参照される)
</script>

3. var:再代入可能な変数(関数スコープ)

`var` キーワードも再代入可能な変数を宣言できますが、 `let` とはスコープが異なります。 `var` で宣言された変数は、宣言された関数内であればどこからでもアクセスできます。

<script>
function myFunction() {
  var message = "こんにちは";
  console.log(message); // こんにちは

  if (true) {
    var message = "こんばんは"; // 関数スコープ内なので、同じ変数が上書きされる
    console.log(message); // こんばんは
  }

  console.log(message); // こんばんは (varは関数スコープなので、上書きされた値が参照される)
}

myFunction();
</script>

const、let、var の使い分け

基本的には、 `const` > `let` > `var` の順で優先して使用することをお勧めします。 * **値を変更しない場合は `const`** を使用します。 * **値を変更する可能性がある場合は `let`** を使用します。 * **古いコードとの互換性を保つ必要がある場合にのみ `var`** を使用します。

参考文献

関連QA

Q1: const で宣言した変数に、後から値を追加することはできますか?

A1: いいえ、 `const` で宣言した変数は再代入不可であるため、後から値を追加することはできません。配列やオブジェクトの場合、要素の追加や変更は可能ですが、変数自体への再代入はできません。

Q2: let と var のどちらを使えば良いですか?

A2: 基本的には `let` を使用することをお勧めします。 `let` はブロックスコープを持つため、意図しない変数の上書きを防ぎ、コードの可読性を向上させることができます。 `var` は関数スコープのため、予期しない動作を引き起こす可能性があります。

Q3: なぜ const、let、var の使い分けが重要なのですか?

A3: 変数のスコープと再代入の可否を明確にすることで、コードの意図が理解しやすくなり、バグの発生を抑制できます。 また、 `const` を使用することで、意図せず値が変更されることを防ぎ、コードの安全性を高めることができます。

その他の参考記事:JavaScriptの型変換