;

Pengenalan Mutable dan Immutable pada Javascript

Pengenalan Mutable dan Immutable pada Javascript


Dalam dunia pemrograman, mungkin anda pernah mendengar istilah Mutable dan Immutable. Apa sih arti kedua istilah tersebut?. Secara sederhana Mutable dapat diartikan "dapat berubah atau diubah", sedangkan Immutable adalah kebalikannya yaitu "tidak dapat berubah atau diubah".


Jika merunut pada pengertian diatas, maka dalam pemrograman Mutable dapat diartikan sebagai object/variabel yang dapat diubah isinya/kondisinya, sedangkan Immutable  dapat sebagai object/variabel yang tidak dapat diubah isinya/kondisinya,

Mutable dan Immutable ini dimaksudkan pada variabel yang dicloning. Dimana sifat Immutable tidak akan membuat variabel asli berubah datanya jika variabel cloningnya diubah datanya , sedangkan sifat Mutable menyebabkan variabel asli berubah datanya jika variabel cloningnya diubah datanya

Dalam bahasa Javascript tipe data String, Integer(number) adalah bersifat  immutable, sedangkan tipe data object dan array bersifat mutable.

Perhatikan contoh cloning variabel String dan Integer berikut :



Pada contoh diatas bisa dilihat bahwa jika variabel asli di-cloning dan nilai pada variabel cloning-an diganti, maka nilai pada variabel asli tidak ikut berubah. Itu adalah contoh pada dari Immutable. Lalu bagaimana dengan array dan object ?

Perhatikan contoh cloning object dan array dibawah ini :

Object :



Array :


Dapat dilihat bahwa ketika variabel cloning, baik object maupun array ketika valuenya diubah, nilai dari variabel asli juga ikut berubah. Hal ini dikarenakan javascript hanya menyalin reference atau alamat memori dimana variabel asli ditampung, bukan malah menyalin valuenya. Dengan kata lain variabel cloning masih menggunakan space memori yang sama dengan variabel asli untuk valuenya.

Untuk mengatasi permasalahan ini, terdapat beberapa cara yang dapat dilakukan baik pada object maupun pada array, yaitu :

Object :



Array



Demikianlah pengenalan Mutable dan Immutable pada javascript.
terimakasih

Comments