JSのES6での変数宣言がほとんどconstになって、letを使う機会がない。


ES6では変数宣言として、var に加えて const, let が追加された。
const は代入不可能な変数宣言なんだけど、
ES6を書いてると、ほとんどの変数宣言がconstにできることに気がついた。

プログラミングにおいて、予期せぬ変数の代入によって発生する不具合は少なく無いと思うから、
イミュータブルな変数としてconstで変数宣言するのはいいことだと思う。

とはいえ、オブジェクトのプロパティ代入は可能だから完全にイミュータブルではないんだけど・・・。

const test = {name:'test'};
test.name = 'fin3'; //これが可能になってしまう。

でも、基本constで変数宣言するのはちょっと違和感。

const は円周率 3.14 とか、マジックナンバーとかの「定数」を宣言する際に利用すべきで、
基本は let を使うべきではないのか?
と思っていた。

というか、今までPHPとかJavaでそういう風に書いてた。

でも、Haskell とか他の関数型プログラミングの観点からすると、
基本 const で全然問題ないと思う。
別に関数型の観点じゃなくても、代入できない制約を設けることで得られるメリットは大きい。

結局、今までのやり方と違うから違和感を感じていただけっぽい。
何となくだけど、ちゃんと自分の価値観を変えていこうと思う。
良くもなるし、悪くもなるだろーけど。

とりあえず、基本constで書いてみて、何かしらダメだったらletに戻すか・・・。