短い答え
- const は再代入できない変数、let は再代入できる変数で、どちらも波かっこ (ブロック) の中だけで使えます。
- var は古い書き方で、範囲が関数の単位でしか区切られず、宣言より前に使ってもエラーにならず undefined になります。
- いまは const を基本にし、値を変える必要があるときだけ let を使い、var は使いません。
深掘りの答え
const でも中身は変えられる
const が禁じるのは「変数に別の物を入れ直すこと」だけです。入っているオブジェクトの中身は変えられます。
JavaScript
const user = { name: "Aya" };
user.name = "Ken";
console.log(user.name);Kenuser = { name: "Ken" } のように入れ直すと、そこで TypeError になります。
使える範囲の違い
if の波かっこの中で宣言すると、var は外に漏れ、let は漏れません。
JavaScript
if (true) {
var a = 1;
let b = 2;
}
console.log(typeof a);
console.log(typeof b);number
undefinedvar の漏れは、ループの中で同じ名前を使ったときに、別の所の値を書き換えてしまう不具合のもとになります。const と let なら、使える範囲が見た目の波かっこと一致するので、読む人が迷いません。
面接官が見ている点
- 「const は定数」と言い切らず、入れ直しと中身の書き換えを分けて話せるか
- なぜ var を使わないのかを、範囲の漏れという具体的な困りごとで説明できるか
- 自分のコードで const と let をどう使い分けているかを、例で言えるか
