letとconstどっちを使えばいいの?
💬 質問
変数を宣言するとき、let と const のどちらを使えばいいのか迷います。使い分けのルールはありますか?
✅ 回答
シンプルなルールがあります:まず const を使い、後から値を変える必要があるときだけ let に変える。
const と let の違い
- const = 再代入できない(値を上書きできない)
- let = 再代入できる(値を上書きできる)
コード例
// ✅ 値が変わらない → const
const name = '太郎';
const items = ['りんご', 'みかん'];
items.push('バナナ'); // OK(中身の変更は可能)
// ✅ 値が変わる → let
let count = 0;
count++; // OK
// ❌ const に再代入するとエラー
const score = 100;
score = 200; // TypeError! よくある疑問:配列やオブジェクトは const でいいの?
はい!const は「変数の箱を別の箱に取り替えられない」だけです。箱の中身を変えるのはOKです。
const fruits = ['りんご'];
fruits.push('みかん'); // ✅ OK(中身を変更)
fruits = ['バナナ']; // ❌ エラー(箱自体を取り替え) var は使わないの?
var は古い書き方で、以下のような予期しない動作を起こすことがあります。
// var はブロックスコープを無視する
if (true) {
var x = 10;
}
console.log(x); // 10(ブロックの外からアクセスできてしまう)
// let はブロックスコープが効く
if (true) {
let y = 10;
}
console.log(y); // ReferenceError(正しくエラーになる) また var は同じ変数名で何度も宣言できてしまうため、大きなプログラムでバグの原因になります。2015年以降は let / const を使うのが標準です。
実際のコードでの使い分け例
// ✅ 設定値・固定値 → const
const MAX_COUNT = 10;
const API_URL = 'https://api.example.com';
// ✅ DOM要素の参照 → const(参照先は変わらないので)
const button = document.getElementById('btn');
// ✅ ループカウンタ → let
for (let i = 0; i < 5; i++) {
console.log(i);
}
// ✅ ユーザー入力で変わる値 → let
let score = 0;
button.addEventListener('click', () => {
score++; // クリックのたびに値が変わる
}); まとめ:迷ったら const。カウンターやループ変数など「後から値を書き換えるもの」だけ let を使いましょう。var は書かない。これを守るだけでバグが減ります。
解決しなかった?
エンジニアに質問する →