質問: ### ecma6、そして今後について お世話になっております。このサイトは、自身の勉強のために利用しています。 さて、javascriptのブラウザ対応表を見ますと、2017-1-21現在、最新のデスクトップブラウザ(IE11を除く)にはおおよそecma6の機能が搭載されたようです。 そこで本日、皆様に伺いたいのは、**teratailでの解答としての**javascriptの書き方です。 * 特に指示がない場合はecma6の書き方か、それ以前のレガシィな書き方か、または両方を書くのがいいのか * まずは、対象のブラウザを聞くのがいいのか * 公式サポートされているブラウザが生きている限り、そのブラウザが使えないコードを書かないのがいいのか * 質問者のコードを見て、なんとなく判断するのか・・・ 皆様のご意見をいただければと思います。
回答: > > 質問者のコードを見て、なんとなく判断するのか・・・ > > > 残念ながらこれ一択と考えています。 所詮受け入れられるのは質問者が理解出来るコードだけです。 例えば九九の配列作って欲しいという依頼があったとしましょう。 ...で、満を持して超かっこいいクールな回答(下記)を返したとします。 ``` const range = a => Array.apply(null, {length: a}).map(Number.call, Number).map(it => it + 1); let kuku = range(9).map(a => range(9).map(b => a * b) ); console.log(kuku); ``` はいだめー、BAは下記のようなコードにさらわれます。 (状態変数が多く一目で正しく動作すると保証するのは困難です) ``` var kuku = []; for (var i = 0; i < 9; i++) { kuku[i] = []; for (var j = 0; j < 9; j++) { kuku[i][j] = (i + 1) * (j + 1); } } console.log(kuku); ``` 何故ならば、九九のロジックを求める層は参考書を片手にかろうじてfor文が読めるレベルだからです。 イディオムを駆使したかっこいいコードは理解が追いつかず、応用の効かないゴミコードとして捨てられます。 私は登録直後、この違いを理解出来ずに何度もBAを逃しています。 でもES6で回答する事は良い事だと思いますし、私がそのような回答を見かければ+評価をすると思います。 ただ、BAを逃す度に心が折れるかも知れません。 また、別の視点として質問者さんが所蔵するチームの問題もあります。 チーム全体の技術力は責任が取れるチームリーダーに依存するので、古い保守的な人間がリーダーの現場は一発アウトです。 IE11どうすんねんに、Babel使おうも聞く耳なく、「Babelでエラーが出たらどう責任とるんだ」 責任をとるのはお前だ 他にも現場のフロントエンドエンジニアではES5でしか書けないのに、一部分だけES6+TypeScript導入してもコストは大きい割にメリットがなく、そっち方面でも文句が出るかと思います。 逆にES6で書こうとする人間やチームならES5のコードは脳内でアップコンバート掛けられるんですよね。 だからES5で表現出来るレベルであればわざわざES6にする必要はありません。 往々にしてそういう人はコードレベルの質問はあまりしないかと思います。 上記の事から基本的に私はES5レベルで実現可能なコードを記載するようにしています。 質問内容を解決するのにES6にしないと難しいなら一言断るか、ES6を使っても良いかというヒアリングが必要かと思ってます。