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の型変換