必要性
端的にいえば、「必要なら学び、不要なら学ばない」
これだけです。
必要性を図る目安は、作れるか、作れないか
作ろうとしているものがES5の範疇で作れるなら、最新仕様を学習しなくても良い(MAY NOT)、といえるでしょう。
ただし、必要性に関係なく、自身の知見を広げる目的なら、最新仕様を学ぶべき(SHOULD)です。
しかし、それを判断できるのは、実際に作ろうとしている takenoko_sand さんです。
自分自身が持ちうる知識(ES5)で作ることを試みて、その結果で判断してください。
それが世の多くのプログラマが意識せずともやっている「必要になったら学ぶ」という姿勢です。
Exploring ES2018 and ES2019
ところで、ES最新仕様の書籍とは**『Exploring ES2018 and ES2019』**の事ですか?
最新仕様を体系的に学びたいのであれば、書籍は良いと思います。
私は所持していないのでレビューはできませんが、"Dr. Axel Rauschmayer" でぐぐれば、著者の事が分かると思います。
後方互換性
Pythonはサーバサイドで動く言語なので、Python2からPython3にバージョンアップする際、プログラマの意志でサーバの環境を変更して対応することができます。
よって、サーバサイド言語は後方互換性のないバージョンアップをすることが可能です。
一方、JavaScriptはクライアントサイドで動く言語(Node.js等のサーバ環境を除く)です。
仮にECMAScriptで「後方互換性がないバージョンアップ」がされた場合、最新バージョンに対応していない古いブラウザを使用しているユーザを切り捨てる事になります。
「HTML4→XHTML2」の移行に失敗した(IE6のシェアが下がらなかった)経緯から、クライアントサイドの言語(HTML,CSS,ECMAScript...etc)は、出来るだけ後方互換性を保つバージョンアップをする傾向にあります。
だからこそ、typeof null
の仕様バグはいつまでも残り続けますし、document.all
は故意にEMCAScript仕様に違反する仕様(HTML Standard)が策定されているのです。
JavaScript
1console.log(typeof null); // "object" (本来は "null" を返すべき)
2
3console.log(Boolean(document.all)); // 存在している
4
5if (!document.all) { // この挙動は故意にECMAScript仕様に違反している (HTML Standard)
6 console.log('document.all is falsy')
7}
私の知る範囲では、後方互換性がなくなった更新は、独自拡張から逆輸入して標準化された 「Object.prototype.__proto__
の削除」ぐらいですね。
そんなわけで、ES5は現在の最新ブラウザでも通用する仕様です。
※仕様を読む段階になれば、内部動作が大きく変化している部分はありますが、同じコードを書けば、同じ結果が返ってくるという意味での後方互換性は担保されています。
Object.prototype.toString
が [[Class]]
ではなく、@@toStringTag
を返すようになりました
new Array
の要素列挙に Array.prototype[@@iterator]
が使用されるようになりました
Re: takenoko_sand さん