2015年にJavaScriptの標準仕様として提案されたES2015(ES6)。その最新仕様を優しく紹介します。2回目の今回は、変数と関数に関する新機能を紹介します。ちなみに、最新の言語仕様であるES2015を利用しますので、最新のブラウザー(Chrome50以降やFirefox46以降)あるいは、Node.jsの最新バージョン6以降をダウンロードして試してみてください(http://nodejs.org)。

変数を宣言するletとconstが追加された!

 さて、ES2015では、変数宣言を行う「let」と「const」が追加されました。もちろん、ES2015以前にも変数宣言を行う「var」がありました。以下のようにして、変数を宣言できました。


var hoge = 30;
var fuga = "abcdefg";

 ES2015で追加されたletとconstも同じようにして変数宣言を行うことができます。


const hoge = 30;
let fuga = "abcdefg";

 同じように使えるのならば、なぜ、letとconstという新たな変数宣言が追加されたのでしょうか。

constは定数宣言を行う

 まずは、分かりやすいconstを紹介しましょう。constは、定数を宣言するための機能です。一度代入したら、その後、値を変更できなくなります。


const hoge = 30; // 定数を宣言
hoge = 50; // ← 値を書き換えたのでエラーになる

 これまで、定数を宣言する言語機能がなかったので、暗黙のルールで、大文字の変数宣言は定数と見なして、値を書き換えないように注意するなどルールベースでプログラムを作ることが多かったのですが、今後は、constを使って定数を宣言できるので、万が一定数を書き換えてしまった場合、エラーを出して教えてくれます。

 また、最近のプログラミングの常識では、変数の値を書き換えるのはバグの元になるという考え方があります。というのも、プログラムを書く際、値を書き換えないといけない変数というのは、ほんのわずかであり、大抵の変数は値を変更することがありません。つまり、プログラムの記述ミスを防ぐためにも、基本的には、constで定数を宣言し、どうしても変数の値を書き換えないといけないものだけをlet宣言するという使い分けをすると良いでしょう。