let変数宣言

1. 変数を宣言

変数を宣言しますが,主にあとで変更する可能性があるものに対して使います.

例1:ログイン状態を管理する

以下の例では,ログインの成功を示す変数(loginSuccessful)が真であった場合のみ,変数isLoggedInを真にしています.

index.js

let isLoggedIn = false;
// ...
if (loginSuccessful) {
  isLoggedIn = true; // 状態の更新
}

例2:SvelteでリアクティブなUIを作る

以下の例は,Svelteというフレームワークで,変数displayNameを操作するコードです.
bind:valueは,<input>(HTMLのテキストボックス)内の文字列と,変数を同期するための属性で,テキストボックスを書き換えると変数displayNameも書き換えられるため,再代入が可能なletを使って宣言します.

Config.svelte

<script>
  let displayName = '太郎';
</script>

<div>
  <input type="text" bind:value={displayName} />
</div>

2. constとの違い

constletも,変数を宣言するという意味では,基本的な役割は同じであるように思われます.

例えば,letconstそれぞれを使って,円周率の変数を作ってみましょう.
その時に間違って(わざと)他の値を再代入してみると,違いが明らかになります.

let.js

let PI = 3.14; // 変数PIは3.14になりました

PI = 3; // PIに3を代入しました

console.log('円周率:', PI); // console.logは,ターミナルに実行結果を表示する関数ですが,この場合は「円周率: 3」と表示されます

const.js

const PI = 3.14; // 定数PIは3.14になりました

PI = 3; // PIは定数なので,代入しようとするとエラーが発生して,処理が中断されます.

console.log('円周率:', PI); // 従って,このコードはそもそも実行されません.

結局のところ,間違えて再代入している部分がある時にいち早く気づくため(エディタが警告してくれる場合が多いです),基本的にはconstが推奨されます.ただし,状態の管理や,UIと連動する変数など,明らかに宣言後に変化しうる変数については,letを使う必要があります.