【JavaScript】 constとletの使い分け

【JavaScript】 constとletの使い分け

2021年3月23日

なんとなくわかっていたつもりでいた、変数のconstとletの違いをまとめてみました。
varは非推奨のため、使わないようにしています。

見直すきっかけ

現在もりけん塾でJavaScriptの課題に取り組んでいます。
その課題の中で連想配列の変数名にletを使用していましたが、
森田先生からconstを使ってくださいとプルリクの中でコメントを頂きました。

私がletを使用したのは、配列を追加したい場合、
constだと追加できないと考えていたからです。

連想配列をconstで宣言し、pushで配列追加を試してみたところ、
普通に配列追加できました。

これを機会に改めて、変数constとletについてまとめます。

JavaScriptの変数宣言について

変数宣言には、const、let、varの3つがあります。
この3つの違いは以下になります。

constletvar
再宣言××
再代入×
スコープブロックブロック関数

再宣言とは

同じ変数名で、変数の宣言をし直すことを再宣言といいます。

var num = 1;
var num = 2;
console.log(num); //2と表示される

改めて変数(var,let,const)は〇〇ですと宣言することになります。
これができるのはvarのみです。そのため現状非推奨とされています。

再代入とは

宣言した変数の値を変更する(代入する)ことを再代入と言います。

let num = 0;
num = 1;
console.log(num); //1と表示される

プログラミングのにおいて「=」は右側の値を左側の変数に入れますという、代入を意味する演算子となります。変数名 = 値で記述すると値を変数に代入するということになります。

再代入ができるのは、var、letのみとなります。

配列の追加

見直すきっかけとなった連想配列への追加は、
連想配列の追加(再代入、再宣言でもない)となるためconstでも定義ができます。

ただし、配列自体を再宣言する場合はconstは使用できません。

const createLists = [
  { anchor: 'a1.html', text: 'a1' },
  { anchor: 'a2.html', text: 'a2' }
]

createLists = new Array();


createLists.push({anchor : 'a3.html', text:'a3'});
//Uncaught TypeError: Assignment to constant variable. とエラーがでる。

この場合はcreateListsという名前の配列を新たに作成(再宣言)したため、
エラーとなります。

もし配列の再宣言が必要となる場合は、
letを使用する必要があります。

let createLists = [
  { anchor: 'a1.html', text: 'a1' },
  { anchor: 'a2.html', text: 'a2' }
]

createLists = new Array();


createLists.push({anchor : 'a3.html', text:'a3'});
//createListsには{anchor : 'a3.html', text:'a3'}のみ格納

この配列に関しては、プリミティブ型、オブジェクトへの参照の話が関わるのですが、
これはまた別記事でまとめようと思います。

まとめ

分かったつもりでいた変数も、
改めて見直すことで変数の使い分けがもっと明確になりました。

あと課題としては変数名のつけ方です。
これはもっと模索していきます。

参考サイト:
https://qiita.com/cheez921/items/7b57835cb76e70dd0fc4
https://qiita.com/yuta0801/items/f8690a6e129c594de5fb

今もりけん塾でJavaScriptを学習しています!

森田先生のBLOG:無骨日記
Twetter:@terrace_tech