varとletの違いとは?変数と定数・JavaScriptでの使い分けもプログラマーがわかりやすく解説
varとletは再宣言できる?letが推奨される訳とは?
変数と定数を見てきましたが、なぜletが必要なのかを解説します。その前に、まずは再宣言について。一度「var a = 0」と宣言した後に、また「var a = 10」と宣言することを再宣言と呼びます。varは再宣言できるのに対して、letは再宣言できない(エラーになる)というのが一番大きな違いです。
元々は再宣言に対して特にエラーにしていませんでした。しかし、すでに宣言している変数を誤って再宣言してしまうと不具合の原因になります。また、その原因を探すのも難しいので、再宣言できないように変更されました。ただ、varの動作を変えてしまうと既存のプログラムが動かなくなったり、異常動作してしまいます。そのため、varとは別に新しくletというキーワードを作ったのです。
varとletはどう使い分ける?
image by iStockphoto
varとletについて見てきましたが、どう使い分けるのでしょう?また、他の言語ではどうなっているのでしょう?続いてその点を解説していきます。
varは過去のもの、これからはlet
すでに説明した通り、varでの変数宣言は昔のプログラムを動かすためにあるので、基本的には利用しないことが推奨されています。ただ、違いは再宣言の可不可以外にも。まず、変数が有効な範囲がvarでは関数の中全体ですが、letでは{と}で囲まれた範囲という違いがあります。また、varでの変数宣言はプログラム中のどこに書いても、必ず関数の先頭で書いたものとみなされますが、letはそうではありません。
どうしてもvarを使いたい場合には使うことは可能です。ただし、他の書き方がないか十分に検討して使用してください。
最近の流行はconst
また、最近のJavaScriptの書き方では、なるべくletでの変数宣言を使わずに、constでの定数宣言を使うことが推奨されています。なぜならば、変数は自由に変更できると説明しましたが、プログラムのミスなどで本来変更したくない場合でも変更できてしまうためです。その意図しない変更を防ぐために定数を使うことを推奨しています。
昔のコンピュータは使える容量が小さかったので、変数を少なくして使い回すことが多かったのです。しかし、現在は容量も大きくなったので、必要に応じて定数を宣言して変更が必要なものなのか、不要なのかをわかりやすくするようにプログラミングの考え方も変化しています。
他の言語では意味が違う
JavaScriptについてvarとletの違いを見てきましたが、他のプログラミング言語ではどうでしょう。多くのプログラミング言語に変数と定数の考え方があります。ただ、その宣言方法はプログラミング言語によってまちまちです。
例えば、アップルがiPhoneやiPad、Mac用のアプリ開発用に公開しているプログラミング言語がSwift。Swiftではletは定数の宣言、varは変数の宣言となっています。また、Pythonでは変数の宣言にletもvarも使いません。「a = 0」のように書くだけです。さらにPythonには定数がありません。ただし変数は小文字、定数として使う変数は大文字という慣例は他のプログラミング言語と同じです。
こちらの記事もおすすめ

スマホを買うならiPhoneとAndroidどっちにすべき?機能・用途の違いからぴったりな選び方を理系ライターがわかりやすく解説
varは過去のもの、これからはletやconstを使おう!
変数と定数についてや、JavaScriptで変数の宣言方法が2つある理由を解説してきました。現在、JavaScriptのプログラムの変数の多くはconstを使った定数で置き換えられると言われています。少なくとも、変数の宣言はvarではなくletを使うことが現在のルールです。
JavaScriptを学ぶために書籍やウェブサイトを見ていると、varを使った昔の事例が多く出てきてしまいます。なるべく新しい資料を参照するか、varではなくconstやletを使うようにすることがおすすめです。





