JavaScript 変数宣言 var,let,constの違い

20220328

JavaScript

t f B! P L

 プログラミング

変数宣言 var,let,constの違い

再代入・再宣言

var

再宣言、再代入可能

let

再代入のみ可能

const

再宣言、再代入どちらも不可

スコープ

グローバルスコープ

トップレベルで宣言すると、
var,let,constは、グローバルスコープを持つ。
※グローバルスコープ:どこからでもアクセスできるよ!

ブロックスコープ

javascript

const a = 0;

if(true){
    const a = 1;
    const b = 2;
    console.log(a);
}

console.log(a);
console.log(b);

結果:
1
0
ReferenceError: b is not defined

if文の中では、
a=1, b=2が定義されている。
a=1, b=2はif文の{}ブロックの中でのみ有効だよ!ということ。

そのため、
最後のconsole.log(a);は、最初に定義したconst a = 0;の値を出力する。
最後のconsole.log(b);は、bなんて定義されてないよ!とおこられる。

typescript

const a = 0;

if(true){
    const a = 1;
    const b = 2;
    console.log(a);
}

console.log(a);
console.log(b);

結果:コンパイルエラー
bなんてないからダメだよ!実行すらさせないよ!となる。
バグがある状態で、実行してしまうjavascriptと、
バグがある状態では、実行すらさせないよのtypescript。

まとめ

var

再宣言、再代入可能、スコープもなんでもあり→なんでもありすぎて使わない(バグを生みやすい)

let

再代入のみ可能、ブロックスコープ→再代入できるため、バグを生みやすい(どうしてもしょうがない場合は使う、程度)

const

再宣言、再代入どちらも不可、ブロックスコープ→制限が多い、そのためバグを生みづらい

できるだけconst使おう!

このブログについて

技術的に悩んだこと、やってみたことを書き溜めています。自身の復習のため、また同じ悩みがある方は参考にできるような書き方にしていきます。 趣味の競馬AI開発と競馬AIでの予想も公開していきます。 金曜日に土曜日の中央競馬(JRA)全レース予想、土曜日に日曜日の中央競馬(JRA)全レース予想を公開する予定です。

Tags

Golang (1) JavaScript (9) python (2) 機械学習 (6) 競馬 (339) 副業 (2)

注目の投稿

2023/05/28(日) 競馬AI予想(東京競馬場)

このブログを検索

アーカイブ

投稿者情報

TANDE競馬のあいちゃんのアイコンです

はじめまして。あいちゃんです。雑魚エンジニアです。趣味で機械学習をやっています。日々の勉強としてアウトプットしていきます。

QooQ