ECMAScript / ECMA-262 Edition 5.1ベースのJavaScript文法
ECMAScriptベースのJavaScriptは、クラスベースのJavaやC++を参考にWeb用途として開発されたプロトタイプベースのオブジェクト指向スクリプトです。
初期のJavaScriptは、オブジェクト指向スクリプトでもあり、手続き型の言語としての利用も想定されており、何れでも利用できることがメリットとして明言されていましたが、ECMAScriptベースのJavaScriptは、オブジェクト指向のスクリプトとして仕様化されています。
JavaScriptは、クラスベースではない為、ライブラリやその中身についてもクラスのimportやincludeといったことについても一切、考える必要がなく、JavaやC++とは用途や機能性に多少の差があるとはいえ、明示的にコンパイルする必要がなく、実行時に自動的にコンパイルされるので特にコンパイルを意識する必要もなく、関数宣言や変数宣言も不要、型も自動的に判定してくれる為、型付けも必要なく、それにより型変換(キャスト)を明示的に行う必要もなく、とても手軽に利用できるように作られています。
JavaやC++などにおいては、生成されるバイトコード(中間コード)や実行ファイルに対し、無駄な領域やバグを含む可能性の排除、結果的なファイルサイズの抑制、機能性、実行速度向上含め、明示的に(、または、ガベージコレクションによる)メモリ開放などの後始末を行う必要がありますが、JavaScriptでは、こうしたことを意識する必要なく、こういった面においても手軽にコーディング、または利用することができます。
これらのことから、JavaScriptでは、「ライブラリ」、「クラス」、「スーパークラス」、「サブクラス」、「親クラス」、「子クラス」、「public」、「static」、「extends」。。。といった用語や定義はなく使用されませんし、「派生」というフレーズも一般的ではなく、「ガベージコレクション」という用語自体、特に存在しませんし、通常は、「コンパイル」さえ意識しなくても利用できます。
但し、「public」、「static」などのように、現在は使われていないものの、予約語となっているケースはあります。
型変換が内部で自動的に行われること、その場合の型変換においても「キャスト」という文言は、使用されない為、JavaScriptでは一般的ではありません。
尚、Netscape社が開発した当時の初期のJavaScriptは、クライアントベースのウェブブラウザ用のスクリプトとして誕生しましたが、最近のJavaScriptは、サーバーサイドスクリプトとしても利用されるなど広く利用されており、その過程で実行速度の向上などの観点からブラウザが実装するいわゆるJavaScriptエンジンにおいては「バイトコード」というフレーズが使用される場合があります。