Search by

    Terakhir diperbaharui: Oct 24, 2020

    JavaScript Engine

    JavaScript termasuk Interpreted Language, yang berarti ada program lain yang bertugas untuk menerjemahkan (translate) JavaScript code ke machine code dengan kata lain ada program yang bertugas untuk mengeksekusi code JavaScript.

    Program itu adalah JavaScript Engine, setiap browser memiliki versi JavaScript Engine-nya masing-masing.

    • Browser Google Chrome menggunakan JavaScript Engine bernama Chrome V8
    • Firefox menggunakan JavaScript Engine bernama GreaseMonkey
    • dll

    js engine

    Namun perlu diketahui V8 yang merupakan JavaScript Engine paling populer saat ini menggunakan metode yang berbeda untuk menerjemahkan source code ke machine code, metode yang digunakan adalah Just-In-Time(JIT) Compilation.

    Just-In-Time(JIT) Compilation merupakan gabungan dari Compiler dan Interpreter.

    Secara sederhana metode ini bekerja sebagaimana interpreter namun dalam prosesnya terdapat proses optimasi, yaitu melakukan compile terhadap bagian dari code yang sering dieksekusi kemudian menyimpan hasil compile tersebut.

    Sehingga jika code tersebut dieksekusi kembali maka JavaScript Engine tidak akan melakukan proses translate dari awal namun akan menggunakan versi compiled yang sudah disimpan sebelumnya.

    Hal ini menjadikan proses translate JavaScript code ke machine code menjadi lebih cepat dan efisien.

    jit

    Dynamic vs Static

    Selain termasuk Interpreted Language, JavaScript juga termasuk Dynamic-Typed language.

    Dimana semua data ditentukan tipenya oleh interpreter saat runtime (ketika aplikasi sedang dijalankan).

    Oleh karena itu kita bisa menyimpan value dengan sembarang tipe ke dalam suatu variable tanpa harus menentukan tipe dari data tersebut.

    1let dinoName = 'brachio';

    Seperti contoh code di atas kita tidak menentukan tipe data dari variable dinoName apakah itu String, Number atau Object.

    Hal ini berbeda dengan Static-Typed language seperti Java atau c#, dimana tipe data harus ditentukan terlebih dahulu.

    1int dinoAge = 1000;

    Code di atas merupakan contoh deklarasi variable pada bahasa pemrograman Java & C#, tipe data dari variable dinoAge adalah int (integer) dan harus ditentukan di awal.

    Hal ini penting untuk diketahui agar kita lebih berhati-hati dalam menulis code JavaScript untuk menghindari bug yang tidak diinginkan karena JavaScript tidak melakukan proses type-checking.

    Sebagai contoh pada JavaScript kita bisa melakukan operasi penjumlahan seperti ini:

    1let dinoName = 't-rex';
    2let dinoAge = 1000;
    3
    4let total = dinoName + dinoAge;

    Sekilas code di atas terlihat aneh, menambahkan teks dengan angka secara matematika adalah sesuatu yang tidak mungkin, namun JavaScript akan tetap mengeksekusinya dan kita akan mendapatkan hasil yang tidak terduga.

    Sedangkan pada Static-Typed language, jika code di atas dieksekusi maka akan muncul pesan error bahwa operasi penjumlahan tersebut tidak bisa dilanjutkan karena ada perbedaan tipe data antara kedua variable.

    dynamic static

    Saat ini kita bisa menggunakan TypeScript atau Flow untuk mengatasi masalah type-checking pada JavaScript, pembahasan TypeScript akan dibahas pada bagian JavaScript Lanjutan.