はじめに
初心者の勉強用の備忘録として、
JavaScriptの変数宣言 const
、let
、var
の違いについてまとめました
結論
- 基本は
const
を使う - 再代入が必要なときだけ
let
var
は使わない
詳細
用語
用語 | 意味 |
---|---|
宣言 | 新しく変数を作ること。例:let x = 1;
|
代入 | 宣言で作成した変数(箱)に値を入れること例:let x = 1;x = 2;
|
再代入 | 一度宣言した変数を更新すること。例:x = 3; (初回の代入後に行う) |
再定義 | 同じ名前の変数を、再び let や const で宣言し直すこと。例:let x = 1; let x = 2; (←これはエラーとなる) |
const
- 再代入できない
- 再定義もできない
- 値を固定したいときに使う
- ブロックスコープ
ブロック({})内で定義した変数はブロックスコープ内でのみ参照可能。
⇒関数スコープ同様にスコープの外側から参照すると例外が発生する。
【再代入】
const test = "代入1回目";
test = "代入2回目"; //エラーになる
【関数スコープ】
function test() {
if (true) {
const x = 1;
}
console.log(x); // エラー:x is not defined
}
test();
let
- 再代入は可能
- 再定義は不可
- 初期値なしで宣言できる
- constと同じくブロックスコープ
【再代入】
let test = "代入1回目";
test = "代入2回目"; //実行可能
function test() {
if (true) {
let x = 1;
}
console.log(x); // エラー:x is not defined
}
test();
>初期値なしで宣言できる
let x; // 初期値なし
x = 1; // 後で代入
var
- 再代入可能
- 再定義可能
- 関数スコープ(関数内で有効、ブロックスコープなし)
- 現代のJavaScriptでは基本的に非推奨
⇒const や let が導入される以前は var しかなく、
そのため古いコードでは使用されているが、新しいコードでは非推奨
【再代入】
var test = "宣言1回目";
test = "宣言2回目";//実行可能
【関数スコープ】
function test() {
if (true) {
var x = 1;
}
console.log(x); // 1(関数スコープなのでここでも見える)
}
test();
参考文献
https://qiita.com/andota05/items/1233b147f4f96bd53646
https://magazine.techacademy.jp/magazine/14872
https://www.youtube.com/watch?v=4NPrR_szrUM&t=345s
https://typescriptbook.jp/reference/values-types-variables/let-and-const
https://tech-dream.school/archives/467
https://qiita.com/takuo_maeda/items/90d5152cc31e26d9d17b