はじめに
最近JSの学習をはじめ、変数を宣言する際にvar、let、constのどれで宣言したらいいのか迷ったので使い分けを備忘録としてまとめて行こうと思います。アドバイスなどがあればコメントよろしくお願いします。
var、let、constの違い早見表
再宣言 | 上書き | 配列・オブジェクト書き換え | |
---|---|---|---|
var | ◯ | ◯ | ◯ |
let | × | ◯ | ◯ |
const | × | × | ◯ |
var
従来のJavaScriptでは変数宣言は全てvarで行っていた。varは変数の上書きも、再宣言、配列・書き換えが全てでき柔軟性はあるが、逆に何でもできてしまうのでプロジェクトが大きくなった時に意図しない変数の上書きや再宣言が起きてしまうためバグの原因になりやすい。古い記述方法なので現在はあまり使わない。
var animal = "いぬ";
// => いぬ
// 再宣言
var animal = "ねこ";
// => ねこ
// 上書き
animal = "さる";
// => さる
let
letはvarと同じで値の上書きはできるが、再宣言はできない。再宣言するとエラーで知らせてくれるので事前に検知することができる。上書きされる前提の変数にはletを使用すると良い。
let animal = "いぬ";
// => いぬ
// 再宣言
let animal = "ねこ";
// => SyntaxError
// 上書き
animal = "さる";
// => さる
const
constは再宣言も上書きもできない厳密な宣言方法。配列やオブジェクトの書き換えは可能。
const animal = "いぬ";
// => いぬ
// 再宣言
const animal = "ねこ";
// => SyntaxError
// 上書き
animal = "さる";
// =>Error
// オブジェクト、配列の書き換え
const animal_array = ["いぬ", "ねこ", "さる"];
animel_array[1] = "きじ";
// => ["いぬ", "きじ", "さる"]