Apakah perbezaan antara JavaScript dan ECMAScript?

Saya telah mencuba googling "perbezaan antara JavaScript dan ECMAScript."

Saya akhirnya terpaksa mengharungi lautan hasil yang samar-samar dan nampaknya bertentangan:

"ECMAScript adalah standard."

"JavaScript adalah standard."

"ECMAScript adalah spesifikasi."

"JavaScript adalah pelaksanaan standard ECMAScript."

"ECMAScript adalah JavaScript standard."

"ECMAScript adalah bahasa."

"JavaScript adalah dialek ECMAScript."

"ECMAScript adalah JavaScript."

Menahan keinginan untuk menangis, saya berhenti dan memutuskan untuk melakukan penyelidikan yang menyakitkan namun produktif.

Artikel ini menunjukkan pemahaman saya mengenai perbezaan antara JavaScript dan ECMAScript. Ini ditujukan untuk orang yang biasa dengan JavaScript tetapi ingin pemahaman yang lebih jelas mengenai hubungannya dengan ECMAScript, penyemak imbas web, Babel, dan banyak lagi. Anda juga akan belajar tentang bahasa skrip, mesin JavaScript, dan waktu berjalan JavaScript untuk mengukur dengan baik.

Oleh itu, dapatkan pam.

Glosari JavaScript / ECMAScript

Berikut adalah senarai definisi, yang direka dengan fokus pada konsistensi dan kejelasan. Definisi tidak 100% lengkap. Mereka dibina dengan cara yang memberikan pemahaman tahap tinggi mengenai hubungan dan hubungan antara JavaScript dan ECMAScript.

Tanpa basa-basi lagi, mari kita mulakan.

Ecma Antarabangsa

Organisasi yang mencipta standard untuk teknologi.

Untuk menggambarkan contoh "standard" (walaupun bukan yang dibuat oleh Ecma), fikirkan semua papan kekunci yang pernah anda gunakan. Adakah sebagian besar memiliki huruf dalam urutan yang sama, dan spasi, kunci Enter, kekunci anak panah, dengan angka yang ditampilkan berturut-turut di bahagian atas? Ini kerana kebanyakan pengeluar papan kekunci mendasarkan reka bentuk papan kekunci mereka pada standard susun atur QWERTY.

ECMA-262

Ini adalah standard yang diterbitkan oleh Ecma International. Ini berisi spesifikasi untuk bahasa skrip tujuan umum.

ECMA-262 adalah standard seperti QWERTY, tetapi bukannya mewakili spesifikasi susun atur papan kekunci, ia mewakili spesifikasi bahasa skrip yang disebut ECMAScript.

Fikirkan ECMA-262 sebagai nombor rujukan ECMAScript.

Bahasa skrip

Bahasa pengaturcaraan yang dirancang khusus untuk bertindak pada entiti atau sistem yang ada

Untuk ide umum tentang apa yang menjadikan bahasa pemrograman menjadi bahasa skrip, pertimbangkan perintah "berjalan", "lari", dan "lompat." Tindakan ini memerlukan sesuatu untuk melaksanakannya, mungkin seseorang, anjing, atau watak permainan video. Tanpa pelakon untuk melakukan perintah ini, "berjalan", "lari", dan "melompat" tidak akan masuk akal. Kumpulan tindakan ini serupa dengan bahasa skrip yang berfokus pada manipulasi entiti luaran.

Skrip ECMAS

Spesifikasi yang ditentukan dalam ECMA-262 untuk membuat bahasa skrip tujuan umum.

Sinonim: spesifikasi ECMAScript

Walaupun ECMA-262 adalah nama standard, ia mewakili spesifikasi bahasa skrip ECMAScript.

ECMAScript menyediakan peraturan, perincian, dan panduan yang harus dipatuhi oleh bahasa skrip agar dianggap sesuai dengan ECMAScript.

JavaScript

Bahasa skrip tujuan umum yang sesuai dengan spesifikasi ECMAScript.

JavaScript adalah bahasa berperisa kopi yang saya suka aturcara. ECMAScript adalah spesifikasi berdasarkannya. Dengan membaca spesifikasi ECMAScript, anda belajar bagaimana membuatbahasa skrip. Dengan membaca dokumentasi JavaScript, anda belajar bagaimana menggunakan bahasa skrip.

Apabila orang memanggil JavaScript sebagai "dialek bahasa ECMAScript", mereka bermaksud dalam arti yang sama seperti ketika berbicara mengenai dialek Inggeris, Perancis, atau Cina. Dialek memperoleh sebahagian besar leksikon dan sintaksisnya dari bahasa induknya, tetapi cukup menyimpang sehingga layak mendapat perbezaan.

JavaScript kebanyakannya menerapkan spesifikasi ECMAScript seperti yang dijelaskan dalam ECMA-262, tetapi ada sedikit perbezaan yang ada. Mozilla menggariskan ciri bahasa bukan ECMAScript JavaScript di sini:

Enjin JavaScript

Program atau jurubahasa yang memahami dan melaksanakan kod JavaScript.

Sinonim : Jurubahasa JavaScript, pelaksanaan JavaScript

Mesin JavaScript biasanya terdapat di penyemak imbas web, termasuk V8 di Chrome, SpiderMonkey di Firefox, dan Chakra di Edge. Setiap mesin adalah seperti modul bahasa untuk aplikasinya, memungkinkan untuk menyokong subset bahasa JavaScript tertentu.

Mesin JavaScript ke penyemak imbas seperti pemahaman bahasa bagi seseorang.Jika kita melihat kembali contoh tindakan "berjalan", "lari", "melompat", mesin JavaScript adalah bahagian dari "entiti" yang benar-benar memahami apa maksud tindakan ini.

Analogi ini membantu menjelaskan beberapa perkara mengenai penyemak imbas:

Perbezaan prestasi penyemak imbas

Dua orang mungkin mengenali perintah "melompat", tetapi seseorang mungkin bertindak balas terhadap perintah lebih cepat kerana orang itu dapat memahami dan memproses perintah lebih cepat daripada orang lain. Begitu juga, dua penyemak imbas dapat memahami kod JavaScript, tetapi satu menjalankannya dengan lebih cepat kerana mesin JavaScriptnya dilaksanakan dengan lebih cekap.

Perbezaan sokongan penyemak imbas

Pertimbangkan perbezaan yang wujud antara orang yang bertutur dalam bahasa yang sama. Walaupun banyak orang berbahasa Inggeris, ada yang tahu beberapa perkataan, ungkapan, dan peraturan sintaksis yang tidak dilakukan oleh orang lain, dan sebaliknya. Penyemak imbas adalah dengan cara yang sama. Walaupun mesin penyemak imbas penyemak imbas semua memahami JavaScript, sebilangan penyemak imbas mempunyai pemahaman bahasa yang lebih besar daripada yang lain. Terdapat perbezaan cara penyemak imbas menyokong bahasa.

Berkenaan dengan sokongan penyemak imbas, orang biasanya berbicara tentang "keserasian skrip ECMAS" dan bukan "keserasian JavaScript", walaupun mesin JavaScript mengurai dan melaksanakan ... dengan baik, JavaScript. Ini boleh sedikit membingungkan, tetapi ada penjelasannya.

Jika anda masih ingat, ECMAScript adalah spesifikasi untuk apa bahasa skrip boleh kelihatan seperti. Melancarkan edisi baru ECMAScript tidak bermaksud semua mesin JavaScript yang ada tiba-tiba mempunyai ciri-ciri baru tersebut. Terserah kepada kumpulan atau organisasi yang bertanggung jawab untuk mesin JavaScript untuk mengetahui tentang spesifikasi ECMAScript terbaru, dan untuk menerapkan perubahannya.

Oleh itu, pembangun cenderung untuk mengemukakan soalan seperti, "Versi ECMAScript apa yang disokong oleh penyemak imbas ini?" atau "Ciri ECMAScript mana yang disokong oleh penyemak imbas ini?" Mereka ingin mengetahui sama ada Google, Mozilla, dan Microsoft telah mengemas kini enjin JavaScript penyemak imbas mereka - misalnya V8, SpiderMonkey, dan Chakra, masing-masing - dengan ciri-ciri yang dijelaskan dalam ECMAScript terbaru.

Jadual keserasian ECMAScript adalah sumber yang baik untuk menjawab soalan-soalan tersebut.

Sekiranya edisi ECMAScript baru keluar, enjin JavaScript tidak menggabungkan keseluruhan kemas kini sekaligus. Mereka menggabungkan fitur ECMAScript baru secara bertahap, seperti yang terlihat dalam petikan ini dari changelog JavaScript Firefox:

Masa berjalan JavaScript

Persekitaran di mana kod JavaScript berjalan dan ditafsirkan oleh mesin JavaScript. Waktu berjalan menyediakan objek host yang JavaScript dapat beroperasi dan diusahakan.

Sinonim : Persekitaran tuan rumah

Jalankan JavaScript adalah "entiti atau sistem yang ada" yang disebutkan dalam definisi bahasa skrip. Kod melalui mesin JavaScript, dan setelah dihuraikan dan difahami, entiti atau sistem melakukan tindakan yang ditafsirkan. Anjingberjalan, seseorangberjalan, watak permainan video melompat (atau dalam kes gambar di atas, bangkai kapal).

Aplikasi membuat mereka tersedia untuk skrip JavaScript dengan menyediakan "objek host" pada waktu runtime. Bagi pihak klien, waktu operasi JavaScript adalah penyemak imbas web, di mana objek host seperti windows dan dokumen HTML disediakan untuk manipulasi.

Adakah anda pernah bekerja dengan tetingkap atau objek tuan rumah dokumen? Objek tetingkap dan dokumen sebenarnya bukan merupakan sebahagian daripada bahasa inti JavaScript. Mereka adalah API Web, objek yang disediakan oleh penyemak imbas yang bertindak sebagai persekitaran host JavaScript. Untuk bahagian pelayan, masa berjalan JavaScript adalah Node.js. Objek host yang berkaitan dengan pelayan seperti sistem fail, proses, dan permintaan disediakan di Node.js.

Titik menarik: jangka masa JavaScript yang berbeza dapat berkongsi mesin JavaScript yang sama. V8, misalnya, adalah mesin JavaScript yang digunakan di Google Chrome dan Node.js - dua persekitaran yang sangat berbeza.

ECMAScript 6

Ini adalah edisi keenam standard ECMA-262, dan menampilkan perubahan besar dan penambahbaikan pada spesifikasi ECMAScript.

Sinonim : ES6, ES2015, dan ECMAScript 2015

Edisi ECMAScript ini menukar namanya dari ES6 menjadi ES2015 kerana pada tahun 2015 Ecma International memutuskan untuk beralih ke penerbitan ECMAScript tahunan. Oleh itu, Ecma International juga mulai menamakan edisi baru spesifikasi ECMAScript berdasarkan tahun ia dikeluarkan. Ringkasnya, ES6 dan ES2015 adalah dua nama yang berbeza untuk perkara yang sama.

Babel

Transpiler yang boleh menukar kod ES6 menjadi kod ES5.

Pembangun boleh menggunakan ciri baru berkilat yang disertakan dengan ES6, tetapi mungkin berkaitan dengan keserasian merentas penyemak imbas untuk aplikasi web mereka. Pada masa penulisan artikel ini, Edge dan Internet Explorer tidak sepenuhnya menyokong ciri dari spesifikasi ES6.

Pembangun yang prihatin boleh menggunakan Babel untuk menukar kod ES6 mereka ke versi yang setara dengan fungsi yang hanya menggunakan ciri ES5. Semua penyemak imbas utama menyokong penuh ES5, sehingga mereka dapat menjalankan kod tanpa masalah.

Satu berita gembira yang lebih menarik

Saya harap anda dapati maklumat ini mengenai JavaScript dan ECMAScript berguna. Sebelum kita menyelesaikan perkara di sini, saya ingin berkongsi satu lagi maklumat yang perlu diperjelaskan untuk pembangun web yang baru seperti saya.

Ayam atau telur

Sejarah yang membingungkan ialah JavaScript dibuat pada tahun 1996. Kemudian diserahkan kepada Ecma International pada tahun 1997 untuk standardisasi, yang menghasilkan ECMAScript. Pada waktu yang sama, kerana JavaScript sesuai dengan spesifikasi ECMAScript, JavaScript adalah contoh pelaksanaan ECMAScript.

Itu memberi kita fakta yang menggembirakan ini: ECMAScript berdasarkan JavaScript, dan JavaScript berdasarkan ECMAScript.

Saya tahu.

Kedengarannya seperti perjalanan masa orang menjadi ibu bapa mereka sendiri - agak aneh, tetapi agak menyeronokkan untuk difikirkan.

Semua perkara baik

Saya tahu kita semua bersenang-senang di sini, tetapi itu banyak maklumat untuk dicerna. Saya akan mengambil kesempatan ini untuk mengucapkan selamat tinggal.

Jangan ragu untuk meninggalkan sebarang pertanyaan, komen, cadangan, atau masalah di bawah.

Terima kasih banyak membaca!