Terlepas dari namanya, JavaScript hanya terkait dengan Java karena keduanya berbagi beberapa memiliki kesamaan sintaksis. Sintaks JavaScript pada pengembangan awalnya adalah terinspirasi oleh sintaks Java dan itu disebut "LiveScript" saat pertama kali diluncurkan dalam versi beta dari Netscape Navigator pada tahun 1995, untuk penawaran lain dari Netscape dan sebagai anggukan atas fakta bahwa Netscape menjalankan “live” pada browser. Microsoft merilis implementasi JavaScript mereka sendiri, "JScript", kemudian dengan Internet Explorer 3.0.
Netscape mengirimkan karya awal ini kepada Ecma International, organisasi yang mengembangkan dan menerbitkan standar teknis, untuk memformalkan dan merinci bagaimana bahasa skrip harus dipahami oleh browser lain. Pada tahun 1997, Ecma Internasional merilis ECMA-262, yang menstandarkan versi pertama pembuatan skrip bahasa yang disebut ECMAScript. ECMAScript adalah standar yang menginformasikan pembuatan bahasa {i>scripting<i} yang lebih spesifik, misalnya, hasil kerja Microsoft kemudian pada now-defunct JScript, Adobe'sRules, dan JavaScript itu sendiri.
Perbedaan ini penting ketika membahas aspek dan fitur khusus dari pada JavaScript. "ES5" akan merujuk pada peristiwa utama pertama rilis ECMAScript standar pada tahun 2009, setelah bertahun-tahun pengembangan secara bertahap. "ES6" (atau "ES2015") adalah singkatan untuk standar yang ditetapkan oleh edisi keenam ECMAScript, yang dirilis pada tahun 2015. Setelah ES6, edisi baru ECMAScript standar telah dirilis setiap tahun, dengan perubahan dan penambahan di setiap edisi yang dirujuk berdasarkan tahun dalam "ES2016" atau "ES2017".
Aturan dasar
Tidak seperti bahasa yang dikompilasi, JavaScript tidak diterjemahkan dari kode yang ditulis seseorang menjadi bentuk yang dapat dipahami oleh {i>browser<i}. Skrip dikirim ke browser di samping aset seperti markup, gambar, dan stylesheet, browser akan menafsirkannya dengan cara yang sama seperti penulisannya: sebagai urutan karakter Unicode yang dapat dibaca manusia, diurai dari kiri ke kanan dan atas ke bawah.
Saat penerjemah JavaScript menerima skrip, ia akan melakukan analisis leksikal, yang menguraikan string panjang dari karakter yang membentuk skrip dan mengubahnya menjadi elemen input diskrit berikut:
- Token
- Karakter kontrol format
- Terminator baris
- Komentar
- Spasi kosong (hampir habis selalu dapat berarti tab dan spasi).
Hasil skrip tidak akan dipertahankan setelah dimuat ulang atau keluar dari halaman saat ini, kecuali Anda menyertakan petunjuk eksplisit untuk melakukan sebaliknya pada naskah.
Pada dasarnya, aplikasi JavaScript terdiri dari pernyataan dan ekspresi.
Pernyataan
Pernyataan adalah unit instruksi yang terdiri dari satu atau beberapa baris kode yang
mewakili suatu tindakan. Misalnya, Anda dapat menggunakan pernyataan berikut untuk menetapkan
nilai ke variabel bernama myVariable
:
let myVariable = 4;
myVariable;
> 4
Agar dapat ditafsirkan dengan benar, pernyataan harus diakhiri dengan titik koma. Namun, titik koma tidak selalu diperlukan saat menulis JavaScript. Fitur yang disebut penyisipan titik koma otomatis memungkinkan garis setelah pernyataan lengkap diperlakukan sebagai titik koma jika titik koma akan menyebabkan {i>error<i}.
ASI adalah koreksi error, bukan aspek permisif dari JavaScript itu sendiri. Karena terlalu mengandalkan koreksi kesalahan ini dapat menyebabkan ambiguitas yang merusak kode, Anda masih harus mengakhiri setiap pernyataan dengan titik koma secara manual.
Blokir pernyataan
Pernyataan blok mengelompokkan sejumlah pernyataan dan deklarasi di dalam pasangan
tanda kurung kurawal ({}
). Ini memungkinkan Anda menggabungkan
pernyataan di tempat JavaScript
mengharapkan hanya satu.
Anda akan sering melihat
pernyataan blok di samping
pernyataan alur kontrol,
seperti if
:
if ( x === 2 ) {
//some behavior;
}
Ekspresi
Ekspresi adalah unit kode yang menghasilkan nilai, dan karenanya dapat berupa
digunakan di mana pun nilai diharapkan. 2 + 2
adalah ekspresi yang menghasilkan
nilai 4
:
2 + 2;
> 4
“Operator pengelompokan”, sepasang tanda kurung yang melingkupinya, digunakan untuk mengelompokkan bagian ekspresi untuk memastikan bahwa sebagian dari ekspresi itu dievaluasi sebagai unit tunggal. Misalnya, Anda dapat menggunakan operator pengelompokan untuk mengganti urutan operasi matematika, atau untuk meningkatkan keterbacaan kode:
2 + 2 * 4;
> 10
( 2 + 2 ) * 4;
> 16
let myVariable = ( 2 + 2 );
myVariable;
> 4
Mengetik lemah
JavaScript adalah bahasa yang diketik dengan lemah, yang berarti nilai data tidak perlu ditandai secara eksplisit sebagai jenis data tertentu. Tidak seperti bahasa yang sangat diketik, JavaScript dapat menyimpulkan jenis yang diinginkan dari konteks nilai dan mengonversi nilai ke jenis tersebut. Proses ini disebut pemaksaan jenis.
Misalnya, jika Anda menambahkan angka ke nilai {i>string<i} dalam bahasa yang memiliki jenis seperti Python, hasilnya adalah error:
>>> "1" + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
Alih-alih menampilkan error, JavaScript memaksa nilai angka ke string dan menyambungkan kedua nilai tersebut, perilaku yang paling mungkin diinginkan saat menambahkan nilai apa pun ke string:
"1" + 1;
> "11"
Jenis data juga bisa dikonversi secara eksplisit. Contoh berikut memaksa
nilai numerik 100
menjadi nilai string "100"
menggunakan fitur bawaan JavaScript
Metode toString
:
let myVariable = 100;
typeof myVariable;
> "number"
myVariable = myVariable.toString();
> "100"
typeof myVariable;
> "string"
Kepekaan huruf besar/kecil
Tidak seperti HTML dan sebagian besar CSS, JavaScript sendiri sepenuhnya peka huruf besar/kecil. Ini berarti Anda harus selalu menggunakan huruf besar untuk semua hal secara konsisten, mulai dari properti dan metode yang dibangun ke dalam bahasa untuk ID yang Anda tentukan diri Anda sendiri.
console.log( "Log this." );
> Log this.
console.Log( "Log this too." );
> Uncaught TypeError: console.Log is not a function
const myVariable = 2;
myvariable;
> Uncaught ReferenceError: myvariable is not defined
myVariable;
> 2
Spasi kosong
JavaScript tidak peka terhadap spasi kosong. Ini berarti penafsir mengabaikan jumlah dan jenis (tab atau spasi) spasi kosong yang digunakan.
console.log( "Log this" );console.log("Log this too");
> "Log this."
> "Log this too."
Namun, keberadaan spasi kosong dapat signifikan sebagai pemisah antara token leksikal:
let x;
[token: [let]
[x]
]
letx;
> Uncaught ReferenceError: letx is not defined
[token: [letx]
]
Ketika spasi kosong digunakan untuk memisahkan token leksis yang bermakna, parser mengabaikan jumlah dan jenis spasi kosong:
let x = 2;
[token: [let]
[x]
[=]
[2]
]
Hal yang sama berlaku untuk jeda baris, meskipun ada kasus di mana pemisah baris bisa menyebabkan masalah dengan mengakhiri pernyataan secara dini):
let x
=
2;
[token: [let]
[x]
[=]
[2]
]
Secara gaya, beberapa jenis pernyataan sering menempati satu baris:
let x = 1;
let y = 2;
Sementara beberapa pernyataan biasanya menggunakan beberapa baris:
if ( x == 2 ) {
//some behavior;
}
Namun, konvensi ini semata-mata demi keterbacaan. JavaScript menafsirkan contoh sebelumnya dengan cara yang sama seperti berikut:
let x=1;let y=2;
if(x==2){}
Karena itu, proses otomatis yang menghapus spasi kosong yang tidak penting dari file skrip untuk mengurangi ukuran transfer adalah langkah umum dalam menyiapkan JavaScript untuk lingkungan produksi, beserta sejumlah pengoptimalan lainnya.
Penggunaan karakter spasi kosong dalam JavaScript sebagian besar ditentukan oleh penulis dan preferensi pemeliharaan. Project JavaScript dengan beberapa developer kode yang berkontribusi sering menyarankan atau menerapkan konvensi spasi kosong tertentu untuk memastikan pemformatan kode yang konsisten—misalnya, penggunaan tab atau spasi untuk indentasi pernyataan bertingkat:
let myVariable = 10;
if ( typeof myVariable === "number" ) {
console.log( "This variable is a number." );
if( myVariable > 5 ) {
console.log( "This variable is greater than five." );
}
}
> "This variable is a number."
> "This variable is greater than five."
Menguji pemahaman Anda
Apakah yang dimaksud dengan ekspresi?
JavaScript peka huruf besar/kecil.