JavaScriptの変数宣言は「let」か「const」に置き換えよう

坂田です。
さて、Webプログラミングをやろうと思うと避けて通れないJavaScript。
このJavaScriptですが、変数宣言についてJavaScript特有の仕様があります。

変数宣言の違い

JavaScriptでは、変数宣言の時に変数名の前に何をつけたかでスコープ(その変数の寿命のようなものです)に違いが出ます。

JavaScriptでは、C#などと違って宣言する時に指定するものは「型」ではなく、スコープを指定します。
宣言後、最後に入れた値の型がその変数の型となり流動的です。

varを使うメリットはほとんどない

変数宣言で指定できるものの中で「var」は、関数内だと関数内スコープ・関数外だと実質グローバル変数となるという違いがあります。
この「関数内スコープ」というのは、ブロックの中で変数宣言してブロックを出たらスコープも抜ける……わけではなく関数の最後まで残ります。
1つのブロックの外ですでに変数宣言していて、ブロック内で同じ変数名を宣言して値を入れるとブロックの外の変数の値が変わってしまい、意図しない結果をもたらします。
グローバル変数が必要でなければ、varを使うメリットはほぼありません。

constを使うのが望ましいが、臨機応変にletも使おう

「let」を使うと、C#などと同じようにブロックスコープとして変数を扱うことができ、意図しない結果をもたらすことはほぼなくなります。
"宣言後最後に入れた値の型がその変数の型となる"という仕様を考慮するとできる限り「const」を使うことが望ましいですが、全てをconstにすることは不可能ですし強引にconstを使うことで逆に可読性を下げることにもつながります。
特別な事情がなければ、値の変更をしないなら「const」・変更される可能性があるなら「let」を使い分けましょう。

このブログの人気の投稿

技術メモ「503 Service Unavailable」

グーグルグループのメーリングリストの返信先が個人になってしまう

『ネットワークドライブ』のトラブル