3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【JavaScript】なんで、var や let じゃなくて const を使用した方が良いの?

Last updated at Posted at 2024-12-12

はじめに

よく、const を使え、var は論外みたいな話を聞きますが
具体的に各宣言の特性を明確に説明できる人は意外と少ないのではないでしょうか。

というわけで、今回復習を兼ねてまとめて行きます。

各宣言の特性

以下の図を見れば、概要がわかると思います。

宣言 var let const
再代入 可能 可能 不可
再宣言 可能 不可 不可
スコープ 関数スコープ ブロックスコープ ブロックスコープ
繰り返し構文 可能 可能 不可

詳細については以下で説明します。

var

ES 2015 で let と const が導入されるまでは、変数宣言の手段は var のみでした。
そのため、一昔前のコードを見ると、var が使われていることが多いです。

ですが現在ではほとんど使用されません。
var は古い構文のため、let や const で宣言された変数とは少し異なる特徴があります。

ブロックスコープに属さないという点です。

if (true) {
  var hoge = "fuga";
}

console.log(hoge);

上記を実行すると...

fuga

ブロックスコープ外から呼ばれてしまいますね...

let

let はブロックスコープを持ち、再宣言ができません。

// 再宣言不可のため、エラーが発生します。
let hoge = "fuga";
let hoge = "piyo";

// 以下のような再代入は可能です。
let fuga = "fuga";
fuag = "piyo";

// ブロックスコープ
// 以下のコードはエラーが発生します。
if (true) {
  let hoge = "fuga";
}
console.log(hoge);

const

再代入も再宣言でもできない、定数を宣言するものです。

// 再代入も不可能のため、エラーが発生します。
const hoge = "fuga";
hoge = "piyo";

ただ、オブジェクトの中身を変更することは可能です。

const author = {
  name: "芥見下々",
  age: 32,
};

author.name = "尾田 栄一郎";
author.age = 49;

console.log(author); //{ name: '尾田 栄一郎', age: 49 } が出力される

結論

  • var は使わないで!
  • 再代入が必要な場合は let を使用しても OK
  • 再代入が不要な場合は、const を使用しましょう!

参照

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?