Immutable ve Mutable Nedir?

Aykut Kardaş
2 min readJan 5, 2021

--

Photo by Rich Tervet on Unsplash

Değişmez değerlere immutable denir. Programlama da bu tanım, tanımladığımız bir değerin değişemeyeceği anlamına gelir. Bunu bir örnekle açıklamak gerekirse:

word değişkeni tanımlandığında aldığı değer RAM de bir alana yazılır ve değer bu alandan okunur. word değişkeninin değeri değiştirildiğinde RAM de yeni bir alana yazılır ve değer yeni alandan okunmaya başlar.

Bu yüzden başka bir değişken (cloneWord) değerini word değişkeninden aldığında, word değişkenin değeri değişse bile, kendi değeri aldığı zamanki haliyle kalır.

Fakat JavaScript dili üzerinden gidecek olursak, her veri tipi immutable değildir. Sadece primitive ilkel veri tipleri immutable özelliğini taşır.

Bu veri tipleri integer, string, boolean, null ve undefined tır.

Mutable

Değişebilir değerlere mutable denir. JavaScript dilindeki mutable veri tipleri Object, Function, Class, Map ve Set tir. Bunların immutable değerlerden farkı, değişikliklerde RAM deki alanları değişmez. Bu yüzden bazı tutarsızlıklara açıktır ve kullanırken daha fazla dikkat gerektirir.

Yukarıdaki örnekte cloneObj değerini, obj değişkeninin değerinden alır. Daha sonra obj nesnesinin age özelliği değiştirildiğinde bundan cloneObj nesnesi de etkilenir. Çünkü değerlerini RAM deki aynı alandan alırlar ve aynı alanı değiştirirler.

Bu durumu aşmanın JavaScript’te çeşitli yolları vardır. Bu yollar mevcut değeri alarak RAM de yeni bir alana yazılacak hale dönüştürmeyi amaçlar.

Örneğin nesne üzerinden ilerlediğimizde Object.assign yöntemi kullanılabilir.

ES6 ile daha temiz bir yöntemle spread operatörü kullanılarak da yapılabilir.

Bunun için önceden geliştirilmiş bazı çözümlerde mevcuttur. Fikir sahibi olmak ve göz atmak isterseniz immutable-js bu çözümlerden biri.

Happy Coding!

--

--