何を今更という人もいると思うのだけど。
varは書く必要ないな、と改めて思いまして。
ということで自分の整理も兼ねて書いています。
何を言いたいか
結論をいうと、
みなさんご存知のようにECMAScript の6th Editionからlet、constというものがあります。
このあたりを使おうという話ですね。
何を気にしているのかと言えばアプリの動作環境、開発環境によってはどうなんだっけという話で。
es6、es2015。恐ろしいことに仕様が出来たのが4年も前なのですね。
今回はes6と表記することとします。
ブラウザコンパチなのか?
babelなり使えばes6は使えるというのはなんとなく分かっていたのですが、
babelに食わせたりしなくてもブラウザコンパチなのかっていうところは各ブラウザどうなんだっけな?って自分としては自信を持って言えないところでした。
で、実際どうなのかというと大体使えます。
https://kangax.github.io/compat-table/es6/
ということはbabelなり使用せずとも、開発中のアプリの対象ブラウザがコンパチである場合がほとんどなので、だいたい使えるということですね。
var と let、constの違い
varはfunctionスコープの変数、letやconstはブロックスコープの変数ということらしいです。
この辺りを参照ください。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let
変数をダブって定義した時に変な動きをするなどということを考えると、
letやconstをを使用している方がバグが混入しにくいといえばしにくいのです。
letの場合は、再代入可能で、
constの場合は再代入が不可なので、
可能ならconst、
実装上constを使うのが厳しい場合はletという感じです。
es6前提として、varは本当に不要なのか
良さそうと思いつつ、誰かに「varは使わないで良いんだよ」って言われたくないですか?僕は言われたい。ということで何かネットに情報落ちてないかなぁと思って調べてみると
Stack Overflowにバッチリな感じのやりとりがありました。
Is there any reason to use the “var” keyword in ES6?
https://softwareengineering.stackexchange.com/questions/274342/is-there-any-reason-to-use-the-var-keyword-in-es6
で、このベストアンサーっぽいのに書いてあるDouglas Crockford 曰く(JavaScript Good The Partsの著者)、letやconstはThe Bettar Partsであるということです。
まとめ
ということで、letとconstを使っていこうという気持ちでした。
functionではなくアロー関数を使おう運動もやっていきたい気持ちもありつつ
thisの束縛でたまにハマるよな、みたいな気持ちもありつつ。。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions
0 件のコメント:
コメントを投稿