JavaScriptはウェブを席巻しており、その中核を成すECMAScriptも成熟期を迎えています。今年半ばにリリース予定の新しい仕様(ES6またはJS2)には、既にテスト可能な数多くの革新的な機能が搭載されています。現在、Firefoxが最も優れたサポートを提供していますが、 Google Traceurなどのトランスパイラによるポリフィルも可能です。以下に、ES6の新機能の概要を簡単に説明します。
新しいキーワードlet は、 var : スコープよりも多くのことをうまく実行します。スコープは他の言語 (C/C++、Java) とまったく同じように動作するようになりました。そのため、 if ブロックも独自のスコープを持つようになりました。ホイスティング、つまり、それぞれのスコープ内での変数宣言 (値の割り当てではない) の優先順位付けも修復されます。:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
その他のイノベーションの数は数多くあります: 定数 (const)、関数のデフォルト値 (function pow(a,b=2) { return Math.pow(a,b); })、関数の新しい表記法 (let pow = (a,b=2) => Math.pow(a,b);)、さまざまな新しい関数 (repeat()、contains()、startsWith()、find()、findIndex())、 ... のループ構築。
新しいデータ型 Set、Map、Proxy、Symbol、import を使用して JavaScript ファイル (他の一部) をインポートする機能、およびクラスと継承のための新しい直感的な構文も言及する価値があります。しかし、多くの場合、文字列リテラル内の改行の可能性など、小さいながらも待望の事項も存在します (特殊な引用符に注意してください)。:
`foo bar`
JavaScriptは、単なるウェブサイトのちょっとした工夫のためのツールにとどまらず、デスクトップアプリケーションに匹敵するほど強力で高性能なウェブアプリケーションを作成するために長年活用されてきました。豊富な新機能とES6への対応により、プログラミングはこれまで以上に楽しくなっています。
新しい定数Number.EPSILONを使用して、2つの数値が等しいかどうかを常に確認したいとは思わなかったのは誰ですか。その値は、1と次に高い浮動小数点値の差を示します。
let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;