Javascriptでシューティングゲームを作る #2 const,let,var

前回の内容
はい、それでは、前回の続きから見ていこうと思う。
前回の記事は以下の通り。
const
さて、コードを見ていく。
まずは、ゲームの背景から、JSで書いていく。canvasにfiledとscreenをコピーさせて、ゲーム画面を表示させる。しっかりアスペクト比を揃える必要があるとのこと。まず、以上の通り、コードは途中まで。
画面サイズだが、アスペクト比を考慮する。アスペクト比は画面比率のことで、16:9とか4:3と見たことがあると思うが、映像における縦横比である。馴染みのあるのは16:9だと思う。コードでいうとここの部分だ。サイズで固定のものとなるので、定数で定義する。それが、const。
定数になるので「再代入による変更はできず、再宣言もできない」。
どういうことかというと、こちらのコードを参照に見ていく。
なんのこっちゃ、これを実行すると、以下の通りになる。paiza.ioは検証とかデバッグで個人的に使えるので、初心者の方は使ってみると良い。

try , catch
try,catchでテストと例外を指定する。ここでは意図した通りにエラーを吐いていることが分かる。
試しに、このtryのnumberを「number1」に変えてみる。すると、エラーは消える。ここから、定数が「再代入による変更はできず、再宣言もできない」ということが何か読み取れると思う。エラー内容にも書いてある。「invalid assignment to const `number’」(定数numberに無効な割り当てがされている)。

let , var
んじゃ、constをletに変えればどうなるか。letは変数なので、再代入してもエラーは出ない。

letの他にはvarがある。何が違うのか。それは「スコープ」に違いがある。簡単に言えば、letはローカルスコープ(ブロックスコープ)、varはグローバルスコープといった感じだ。以下のコードを見てみる。
varは関数全体を含むスコープとなり、関数内でどう定義しようが同じものとなるので、最後に設定した変数がその値となる。一方で、letはある式に限定して変数を設定できるので、ブロックごとに別物の変数となる。よって、値は別になる。
ただし、オブジェクト内部のプロパティを変更することはできるので、全くの不変ということではないようだ。


全然進んで無いが、今回はここまでとする…。
参考動画
勉強させていただいております…。ありがとうございます。