Pengantar JavaScript

Terlepas dari namanya, JavaScript hanya terkait dengan Java karena keduanya memiliki beberapa kemiripan sintaksis. Sintaksis JavaScript pada pengembangan awalnya terinspirasi secara longgar oleh sintaksis Java dan disebut "LiveScript" ketika pertama kali dikirimkan dalam versi beta Netscape Navigator pada tahun 1995, keduanya untuk menyelaraskan dengan beberapa penawaran lain dari Netscape dan sebagai pengakuan atas fakta bahwa ia berjalan "langsung" di browser. Microsoft merilis implementasi JavaScript mereka sendiri, "JScript", tak lama setelah itu dengan Internet Explorer 3.0.

Netscape mengirimkan upaya awal ini ke Ecma International, sebuah organisasi yang mengembangkan dan memublikasikan standar teknis, untuk merumuskan dan menjelaskan bagaimana bahasa skrip ini harus dipahami oleh browser lain. Pada tahun 1997, Ecma International merilis ECMA-262, yang menstandarkan versi pertama bahasa skrip yang disebut ECMAScript. ECMAScript adalah standar yang menginformasikan pembuatan bahasa skrip yang lebih spesifik. Misalnya, hasil kerja Microsoft berikutnya pada JScript, Adobe JUnit, dan JavaScript itu sendiri yang sekarang sudah tidak ada lagi.

Perbedaan ini penting saat membahas aspek dan fitur khusus JavaScript. "ES5" mengacu pada rilis utama "berversi" pertama dari standar ECMAScript pada tahun 2009, setelah bertahun-tahun melakukan pengembangan secara bertahap. "ES6" (atau "ES2015") adalah singkatan dari standar yang ditetapkan oleh ECMAScript edisi keenam yang dirilis pada tahun 2015. Setelah ES6, edisi baru standar ECMAScript akan dirilis setiap tahun, dengan perubahan dan penambahan setiap edisi disebut berdasarkan tahun seperti dalam "ES2016" atau "ES2017".

Aturan dasar

Tidak seperti bahasa yang dikompilasi, JavaScript tidak diterjemahkan dari kode yang ditulis seseorang ke dalam bentuk yang dapat dipahami browser. Skrip dikirim ke browser bersama dengan aset seperti markup, gambar, dan stylesheet, browser menafsirkannya dengan cara yang sama seperti tertulis: sebagai urutan karakter Unicode yang dapat dibaca manusia, yang diuraikan dari kiri ke kanan dan dari atas ke bawah.

Saat menerima skrip, penafsir JavaScript menerima skrip, pertama-tama ia akan melakukan analisis leksikal, dengan mengurai string karakter panjang yang membentuk skrip, lalu mengonversinya menjadi elemen input terpisah berikut:

  • Token
  • Karakter kontrol format
  • Terminator baris
  • Komentar
  • Spasi kosong (hampir selalu artinya tab dan spasi).

Hasil skrip tidak akan dipertahankan setelah memuat ulang atau keluar dari halaman saat ini, kecuali jika Anda menyertakan petunjuk eksplisit untuk melakukannya dalam skrip.

Pada dasarnya, aplikasi JavaScript terdiri dari pernyataan dan ekspresi.

Pernyataan

Pernyataan adalah unit petunjuk 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 ini tidak selalu diperlukan saat menulis JavaScript. Fitur yang disebut penyisipan titik koma otomatis memungkinkan jeda baris setelah pernyataan lengkap diperlakukan sebagai titik koma jika titik koma yang hilang akan menyebabkan error.

ASI adalah koreksi error, bukan aspek permisif JavaScript itu sendiri. Karena terlalu mengandalkan koreksi error ini dapat menyebabkan ambiguitas yang merusak kode, Anda harus tetap mengakhiri setiap pernyataan dengan titik koma secara manual.

Pernyataan pemblokiran

Pernyataan blok mengelompokkan sejumlah pernyataan dan deklarasi di dalam sepasang tanda kurung kurawal ({}). Pernyataan ini memungkinkan Anda menggabungkan pernyataan di tempat-tempat yang mengharapkan JavaScript hanya satu.

Anda akan sering melihat pernyataan blok bersama pernyataan alur kontrol, seperti if:

if ( x === 2 ) {
  //some behavior;
}

Ekspresi

Ekspresi adalah unit kode yang menghasilkan nilai, dan karena itu dapat digunakan di mana pun sebuah nilai diharapkan. 2 + 2 adalah ekspresi yang menghasilkan nilai 4:

2 + 2;
> 4

"Operator pengelompokan", pasangan tanda kurung tutup yang cocok, digunakan untuk mengelompokkan bagian ekspresi guna memastikan bahwa sebagian ekspresi dievaluasi sebagai satu unit. Misalnya, Anda dapat menggunakan operator pengelompokan untuk override the mathematical order of operations, atau meningkatkan keterbacaan kode:

2 + 2 * 4;
> 10

( 2 + 2 ) * 4;
> 16

let myVariable = ( 2 + 2 );

myVariable;
> 4

Ketikan 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 diketik dengan kuat, 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 string dalam bahasa yang memiliki format 'strong-type', 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

JavaScript memaksa nilai angka ke string dan menggabungkan dua nilai, bukan menampilkan error, yang merupakan perilaku yang paling mungkin diinginkan saat menambahkan nilai apa pun ke string:

"1" + 1;
> "11"

Jenis data juga dapat dipaksakan secara eksplisit. Contoh berikut mengonversi nilai numerik 100 menjadi nilai string "100" menggunakan metode toString bawaan JavaScript:

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. Artinya, Anda harus selalu menggunakan huruf besar untuk semuanya secara konsisten, mulai dari properti dan metode yang disertakan dalam bahasa hingga ID yang Anda tentukan 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: variablename is not defined

myVariable;
> 2

Spasi kosong

JavaScript tidak peka spasi kosong. Hal 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, kehadiran spasi kosong dapat signifikan sebagai pemisah antara token leksikal:

let x;

[token: [let] [x] ]

letx;
> Uncaught ReferenceError: letx is not defined

[token: [letx] ]

Jika spasi kosong digunakan untuk memisahkan token leksikal yang bermakna, parser akan mengabaikan jumlah dan jenis spasi kosong:

let           x                             =                           2;

[token: [let] [x] [=] [2] ]

Hal yang sama berlaku untuk jeda baris, meskipun ada kasus ketika jeda baris dapat menyebabkan masalah dengan mengakhiri pernyataan lebih awal):

let x
=
2;

[token: [let] [x] [=] [2] ]

Secara gaya, beberapa jenis pernyataan sering menempati satu baris:

let x = 1;
let y = 2;

Meskipun beberapa pernyataan biasanya menggunakan beberapa baris:

if ( x == 2 ) {
  //some behavior;
}

Namun, konvensi ini hanya agar mudah dibaca. JavaScript menafsirkan contoh sebelumnya dengan cara yang sama seperti berikut:

let x=1;let y=2;
if(x==2){}

Oleh karena itu, proses otomatis yang menghapus spasi kosong yang tidak penting dari file skrip untuk mengurangi ukuran transfer merupakan langkah umum dalam menyiapkan JavaScript untuk lingkungan produksi, bersama dengan sejumlah pengoptimalan lainnya.

Penggunaan karakter spasi kosong di JavaScript sebagian besar terkait dengan preferensi penulis dan pengelola. Project JavaScript dengan beberapa developer yang berkontribusi pada kode sering kali menyarankan atau menerapkan konvensi spasi kosong tertentu untuk memastikan pemformatan kode yang konsisten, misalnya penggunaan tab atau spasi untuk mengindentasi 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

Apa yang dimaksud dengan ekspresi?

Satuan kode yang menghasilkan nilai.
Komentar yang menjelaskan fungsi kode.
Sekelompok pernyataan dan deklarasi.

JavaScript peka huruf besar/kecil.

Benar
Salah