JavaScript, ES6, ES7, ES10 where are we?
On 1月 26, 2022 by adminES6 and ES7 – reminder
あなたを侮辱するつもりはないし、また別のES6紹介を書くつもりもない…が実はそうするつもりなのである。 一言で言えば、ES6(またはES2015)とは、2015年のマイルストーン通りにStage4を通過した機能の一括のことです。 つまり、ES6をよく理解し、ES7をある程度知っていれば、4年分くらいは追いつける…無理はしない
ES6に正式に含まれているものを見てみよう。 ちなみに、これらの機能はすべてブラウザ間で公式にサポートされています。
ES6 には次のものがあります:
クラスを作成および継承する機能
class MyComponent extends React.Components {}
ES6 モジュールと import および export
import * from 'React';export default MyComponent;
Generators
let fibonacci = {
*() {
let pre = 0, cur = 1
for (;;) {
=
yield cur
}
}
}
気づいたでしょうか? デコレーター、オブジェクトの再構築(Reactのprops: {…props}など)などはES6の一部ではありません!
ES7(ES2016) については、こんな感じです。 かなり小さなアップデートです:
- 指数演算子
base ** exponent
- Array includes
array.includes(myItem) // true or false
ソースです。 http://ecma-international.org/ecma-262/7.0/
おそらくお気づきだと思いますが、Async/Await は ES7 ではなく ES8 の一部です!
ES8, ES9, ES10
過去 2 年間に JavaScript 関連のインタビューを受けた人は全員、少なくとも 1671 回 ES6 とは何か、それがもたらす機能は何かと聞かれたことでしょう。 しかし、JSがES6やES7で突然停止したわけではなく、誰もそれについて尋ねないことに気づいた人はいますか? 5280>
ES8 (ES2017) では、利用可能な機能は次のとおりです:
そしてもちろん、Async / Await 関数:
もしあなたが記事を追ったなら、今までにそれを得たはずです。 わずかな例外を除いて、これらの機能は Stage 4 であるため、Babel なしでブラウザで使用できます (とはいえ、ES8 は ES2017 であり、まだかなり新しく、Edge や Opera のネイティブ エンジンなど一部の実装は少し遅れをとっています).

ES9 に進みます。 ES8やES6と同じく、ES9(またはES2018)はかなりメジャーなアップデートです:

最後にES10(またはES2019)へと移行してください!
const array = ;array.sort(...)/*
*/
- Make JavaScript a supererset of JSON (see details here)
What about ES5?
If ES6 is ES2015, ES7 is ES2016, can you guess what ES5’s year is?
…You lost! (実際に知っていれば別ですが、実際には聞き取れないので、あなたの負けとします)。 ES5はES2009です!
ここで終わらないのが、ES5以前、最後のESアップデートは1999年です!

このように、97年から99年はかなり頻繁にアップデートされて、そして16年ぶりにES5の更新になる予定だった!!!

それをどう説明すればいいのでしょうか。 まあ、私見では、これには2つの要因があると思います。 まず 1 つは、技術的なものです。 JavaScript は最悪です。 正直言って、そうです。 当時は、Java アプレット、ActiveX、さらには Flash など、JS の代替となるものがいくつかありました。
2011 年頃まで (Chrome が爆発的にヒットし始めた頃)、これらの技術は JS より桁違いに速かっただけでなく、現在 JS で苦労している機能のほとんどをすでに備えていました。 (Javaには、クラスやデコレータ、マルチスレッドのサポート、OpenGL、Socketなど、あらゆる言語機能が備わっています)。 ChromeとGoogleが参入し、2013年にJavaの脱退を発表したとき(その後Flashも続いた)、JSを競合他社に追いつかせるための聖戦が始まったのです。 その2年後にES6が登場したのです。
2つ目の要因は経済的なもので、2000年はドットコムバブルが崩壊した年です。 若い方は、数年前のビットコインを想像してみてください。90年代後半は、インターネットのスタートアップも同じようなものでした。 スタートアップは名前の最後に.comをつけて莫大なベンチャー投資を得ていましたが(ちょうど今でいうmySuperStartup.aiのような誓約書)、20年代に入って急に価値が下がりました。 これは非常に初歩的な説明で、より良い説明は wikipedia の記事を見ていただくとして、
要は、JS や Web 関連の技術を中心に据えるために必要な牽引力をインターネットが獲得するのを止めたということなのです。 その後、Amazon、Facebook、Google の台頭により、Web には新たな存在理由と、繁栄する理由が生まれました。 そのため、JSを再び取り上げることは論理的なことだったのです Googleは2004年に公開され、Chromeは2008年にリリースされ、2014年には最も人気のあるブラウザになりました:ES6が到着する1年前です
What’s Missing? (却下された提案)
Object.observe
これはおそらく最大の却下案でしょう。 これは当初、JS がコード内の任意の値を観察できるようにしました :
var obj = {
foo: 0,
bar: 1
};
Object.observe(obj, function(changes) {
console.log(changes);
});obj.baz = 2;
//
これは素晴らしい機能で、明らかに、自分のコードから(または polyfill で)それを行うことができますが、ブラウザでそれを実装すると、より速い反応型コード(ex: Angular は多くの観察を使用します)を約束するものでした。 一定のパフォーマンスを持つ実装に至らなかったため、撤回された。 詳細はこちら。
Cancelable Promises
説明不要な機能ですが、唯一欠けているものではないと確信しています。 このアイデアは、開発者がいつでも任意のプロミスの実行をキャンセルできるようにすることです。
使用例はさまざまで、たとえば、非同期操作でクライアント側のタイムアウトを発生させたり、たとえば、タブ駆動のナビゲーション システムがあり、現在のタブのコンテンツをロードする時間がないうちにユーザーがタブをクリックするといった場合です。
blöcks
私がこの件に言及したのは、名前が好きだからだけでなく、Go ルーチンや C# タスクに匹敵する素晴らしい機能だからです。
const blöck = await {|
// This code is Async, but most importantly, executed in another thread
|};
Others
他にも呼び出し可能コンストラクタなど、いくつかの興味深い提案を行ってきました。 それらのほとんどは、オリジナルの作者がそうしたので撤回されるか、 既存の/計画された機能と衝突するか重複するので拒否されます。
コメントを残す