Apa itu JavaScript?

95

Semua ini dimulai ketika saya mencari cara untuk menguji halaman web saya untuk kesesuaian JavaScript seperti W3C HTML Validator . Saya belum menemukannya. Jadi beri tahu saya jika Anda tahu ada ...

  1. Saya mencari halaman JavaScript resmi dan menemukan ECMA Script . Orang-orang ini telah menstandarisasi bahasa scripting (saya tidak merasa ingin menyebutnya JavaScript lagi!) Dan menyebutnya ECMA-262 ( Wikipedia ). Karya terbaru mereka adalah Edisi 5.1

  2. JavaScript dikembangkan oleh Mozilla Corporation dan versi stabil terakhir mereka adalah 1.8.5 ( lihat ini ) yang didasarkan pada edisi ECMA 5.1

  3. The halaman Wikipedia terkait menyebutkan dialek. JavaScript 1.8.5 Mozilla terdaftar sebagai dialek bersama dengan JScript 9 (IE) dan JavaScript ( V8 Chrome [ Wiki ]) dan banyak lainnya. Apakah saya mengerti bahwa JavaScript 1.8.5 adalah turunan dari ECMA-262 dan SpiderMonkey [ Wiki ] adalah mesin yang menjalankannya? Dan Chrome memiliki dialeknya sendiri dan mesin V8 adalah program yang menjalankannya?

Dengan semua dialek yang didasarkan pada ECMA-262, apa yang tidak lagi saya mengerti adalah "Apa itu JavaScript "? Apakah ada bahasa scripting lintas browser yang benar-benar? Apakah berbagai pelaksana berkumpul untuk menyetujui kompatibilitas lintas dialek? Apakah ini upaya ECMA?

Tuan Loh.
sumber
10
Anda lupa menyebutkan ActionScript, yang merupakan dialek ECMA yang tidak ada hubungannya dengan apa yang Anda sebut Javascript.
DaveRandom
4
Tidak terlalu banyak untuk kesesuaian (seperti yang sudah Anda soroti), tetapi jslint cukup bagus untuk memeriksa kode.
SomeKittens
2
@ MadaraUchiha - Saya setuju "gunakan saja jQuery. Semuanya akan beres." tidak akan baik-baik saja. Itu sebabnya saya mulai meneliti ini. Situs saya bharath.lohray.com berfungsi dengan baik di Chrome dan Firefox dan validator W3C juga tidak menghasilkan kesalahan, tetapi sangat menyebalkan pada IE terbaru! Selain itu, sebanyak saya menyukai ide orang-orang di anybrowser.org/campaign , saya tidak bisa benar-benar lintas browser!
Tuan Loh.
7
Tentang halaman Anda, scrolling sangat menjengkelkan dan di atas. Hanya IMO Dan gelar "Tuan" terdengar sombong, bahkan jika Anda benar-benar Tuan.
NullUserException
11
Ini tidak perlu mencolok. Anda tidak melihat posting meluncur ke atas dan ke bawah pada SE. Jika itu dimaksudkan untuk menjadi situs web yang terlihat profesional dan Anda masih menginginkan transisi, gunakan sesuatu yang lebih bijaksana seperti fade-in / fade-out.
NullUserException

Jawaban:

96

Hampir semua bahasa dewasa didefinisikan oleh spesifikasi, dan kompiler atau juru bahasa mencoba mengikuti standar yang ditentukan dalam spesifikasi itu. Tetapi sangat jarang mereka berhasil, kecuali standar didefinisikan oleh penulis bahasa.

Anda dapat menemukan standar C ++ 2003 , spesifikasi C # 4 , spesifikasi Java 7 dan banyak lagi yang online. Banyak dari ini memiliki nomor standardisasi ECMA atau ISO. Ini hanya organisasi dengan mana Anda dapat mendaftarkan standar dan membuatnya lebih resmi.

Ruby secara historis melakukan hal-hal sedikit berbeda, memiliki serangkaian tes yang dapat dieksekusi sebagai spesifikasi . Jadi, jika Anda ingin menulis seorang juru bahasa dan menyebutnya Ruby standar, Anda hanya perlu membuat seorang juru bahasa yang lulus semua tes tersebut. Tetapi bahkan Ruby kemungkinan akan menjadi spesifikasi yang lebih formal pada akhirnya.

Javascript tidak berbeda, kecuali mungkin dalam perkembangannya.

Javascript pertama kali dibuat oleh Netscape. Mereka menyebutnya LiveScript, tetapi terlihat mirip dengan Java dan mereka membuat kesepakatan dengan Sun atas nama, yang menguntungkan baik pemasaran Netscape dan Java. Microsoft memiliki VBScript dan (karena alasan yang mungkin hilang karena dugaan) pada dasarnya menyalin Javascript, tetapi nama itu dimiliki oleh Sun, jadi mereka dengan nakal menyebutnya JScript.

Tapi JScript, sementara sangat mirip dengan Javascript dalam sintaksis, membuat banyak penggunaan COM - misalnya, IE5 dan 6 instantiate objek XMLHttpRequest menggunakan new ActiveXObject("Microsoft.XMLHTTP");.

Maka, "dialek" Javascript yang paralel, serupa tetapi juga berbeda lahir. Seiring waktu, berbagai kelompok yang memiliki browser dengan pangsa pasar lebih sedikit daripada IE telah mencoba untuk menstandarisasi bahasa, dan selama bertahun-tahun Microsoft menolak. Sampai V8.

V8 cepat. Ini menetapkan standar pasar yang sama sekali baru. Itu membuat segalanya tampak miskin.

Dan, melalui berbagai kasus antimonopoli terhadap Microsoft, IE kehilangan pangsa pasar. Tiba-tiba, Microsoft berkepentingan untuk mendukung standardisasi. Kami belum ada di sana, tapi masih di jalur yang benar.

Sementara itu, V8 adalah open-source, yang memungkinkan orang untuk mulai memikirkan penggunaan baru untuk Javascript parser cepat, seperti Node.js .

Tetapi, untuk kembali ke pertanyaan Anda: Apa itu Javascript? Ini adalah nama umum (dan asli) untuk ECMAScript, spesifikasi untuk bahasa prototipe yang umum, tetapi tidak secara eksklusif, digunakan untuk menavigasi dan memanipulasi model objek domain dalam sebuah broswer.

ECMA-262 hanyalah definisi standar, seperti ECMA-334 adalah definisi standar untuk C #. ECMAScript adalah satu-satunya nama yang disetujui oleh semua pihak yang berkepentingan, pada tahun '99, ketika ECMA-262 ditulis.

pdr
sumber
7
Jika saya dapat meningkatkan jawaban Anda lebih dari sekali, saya akan melakukannya :-) Ini membantu membuat beberapa hal lebih jelas. Analogi kompiler C membuat situasinya sedikit dimengerti :-) Kecuali JavaScript tidak dikompilasi ke biner dan pengguna akhir melihat skrip non-fungsional. Jadi, apakah saya harus mengerti bahwa saya tidak dapat membangun halaman dengan standar dan berharap untuk dapat berfungsi pada semua browser yang sama? (Belum menjadi kata operatif).
Tuan Loh.
1
@ LordLoh. Itu betul. Tetapi Anda dapat mengizinkan perpustakaan seperti jQuery dan Prototype untuk mengabstraksi perbedaan yang ada untuk Anda.
pdr
Posting ini dan penelitian dimulai ketika animasi jQuery tidak berfungsi di IE9 dan saya berbohong ide kampanye anybrowser.org dan berharap saya bisa tetap berpegang pada standar. HTML5 / CSS3 / JS. JS berakhir sebagai bug di kap saya.
Tuan Loh.
1
@ LordLoh. Saya tidak akan begitu yakin itu kesalahan jQuery. Hanya dengan sekilas saja muncul masalah dengan HTML Anda (misalnya, tanda kutip yang hilang) dan ketika Anda meminimalkan Javascript seperti itu, akan ada hasil yang aneh jika Anda tidak terlalu akurat. Saya ingat masalah dahulu kala di mana saya melewatkan titik koma dan hanya gagal setelah kompresi di salah satu browser utama. jQuery cukup stabil dan harus bekerja dengan baik dengan IE9.
pdr
5
@ LordLoh. console.log adalah masalah Anda. Ini tidak berfungsi kecuali Anda membuka bilah alat pengembang (dan karenanya membuat objek "konsol").
pdr
23

Javascript adalah implementasi ECMAScript yang umum digunakan. Ini situasi yang sangat mirip dengan keluarga Skema . Dalam Skema, Anda memiliki spesifikasi yang sangat formal. Versi saat ini adalah R6RS meskipun R5RS sejauh ini merupakan standar yang lebih umum diimplementasikan pada posting ini. Implementasinya lebih tersebar daripada ECMAScript karena usia Skema dan filosofi umum.

Javascript menjadi hal yang umum sekarang sebagian besar karena pertumbuhan eksplosif dalam pangsa pasar Firefox Mozilla dan Google Chrome. Ini mendapatkan pijakan awalnya dengan Netscape Navigator yang akhirnya berubah menjadi browser Mozilla dan kemudian menjadi Firefox (dan Iceweasel jika Anda menjalankan dengan kerumunan Skema).

Sekarang di sinilah ia menjadi sedikit tidak pasti. Sebagian besar kinerja Javascript berasal dari parser dan mesin menjalankannya. Di sinilah perbedaan nyata antara browser menjadi jelas. Spidermonkey menjalankan Javascript secara berbeda dari V8. Javascript masih memiliki bintik-bintik kasar seperti kurangnya perpustakaan yang sepenuhnya umum, meskipun itu sedang dikerjakan.

Jadi jika Javascript adalah C ++, maka ECMAScript akan menjadi C ++ 11, dengan UNIX dan G ++ menjadi yang paling dekat dengan "standar" sedangkan C ++ untuk .NET dan Objective C ++ terletak lebih jauh seperti Actionscript dari ECMAScript

Insinyur Dunia
sumber