JavaScript Dersleri

JavaScript'te const ile Tanımlanan Diziler Neden Değiştirilebilir?

eminbasbayan

eminbasbayan

3 dk okuma
JavaScript'te const ile Tanımlanan Diziler Neden Değiştirilebilir?
🔍 Büyütmek için tıklayın

JavaScript öğrenen pek çok kişi, const kelimesini gördüğünde bu değişkenin tamamen sabit olduğunu, yani bir daha asla değiştirilemeyeceğini düşünür. Bu düşünce, ilk etapta doğrudur ama yalnızca basit değerler (sayılar, metinler gibi) için geçerlidir. Konu dizilere (ve nesnelere) geldiğinde durum biraz daha farklıdır. Bu makalede, const ile tanımlanan dizilerin neden değiştirilebildiğini detaylı bir şekilde açıklayacağız. Konuya özellikle yeni başlayan öğrencilerin anlayabileceği şekilde yaklaşacağız.

const ile Tanımlanan Değişkenler Değiştirilemez mi?

Öncelikle temel bilgiyle başlayalım. Aşağıdaki örneği inceleyelim:

const okulAdi = "Atatürk Lisesi"; okulAdi = "Cumhuriyet Lisesi"; // HATA!

Bu örnekte const ile tanımlanan okulAdi adlı değişkene daha sonra başka bir değer atamak (reassignment) mümkün değildir. JavaScript bu durumda bir hata verir çünkü const, tanımlanan değişkenin değerinin yeniden atanmasını engeller.

Peki Ya Diziler?

Şimdi konuyu dizilere taşıyalım:

const ogrenciler = ["Ayşe", "Mehmet", "Ali"];

Buraya kadar her şey normal görünüyor. Ama şimdi bu dizinin içeriğini değiştirmeye çalışalım:

ogrenciler.push("Zeynep"); ogrenciler[1] = "Mustafa";

Bu iki işlem de hata vermez. Yani const ile tanımladığımız halde dizinin içine yeni eleman ekleyebiliyoruz veya mevcut elemanları değiştirebiliyoruz. Bu nasıl mümkün oluyor?

Dizilerde Asıl Korunan Şey: Referans

Cevap, dizilerin JavaScript’te nasıl çalıştığıyla ilgili. Basit veri tiplerinde (sayı, metin, boolean gibi) değişkenin tuttuğu değer, doğrudan o değişkende saklanır. Ama diziler gibi karmaşık veri yapılarında durum farklıdır: Değişkenin tuttuğu şey, dizinin kendisi değil, dizinin bellekteki yeri (adres ya da referans) olur.

const kitaplar = ["1984", "Hayvan Çiftliği"];

Bu örnekte kitaplar, aslında dizinin bellekteki adresini saklar. Biz bu adresi değiştirmediğimiz sürece, dizinin içeriğini değiştirmekte özgürüz. Yani const burada referansı sabitler, içeriği değil.

Referansı Değiştirmeye Çalışırsak Ne Olur?

Şimdi aynı diziye tamamen başka bir dizi atamaya çalışalım:

kitaplar = ["Kuyucaklı Yusuf", "Tutunamayanlar"]; // HATA!

İşte burada hata alırız. Çünkü artık bellekteki başka bir diziye yeni bir referans atamaya çalışıyoruz. Bu da const kurallarına aykırı. JavaScript bunu engeller.

Neden Böyle Bir Şeye İzin Veriliyor?

Bu yapı, uygulamalarda veri güvenliğini sağlar. Örneğin bir mesajlaşma uygulaması yaptığınızı düşünün. Elinizde kullanıcıların yazdığı mesajları tutan bir dizi olsun:

const mesajlar = [];

Kullanıcı mesaj attıkça bu diziye yeni elemanlar ekleyeceksiniz. Ama bu dizinin kendisinin tamamen değişmesini istemezsiniz. Yani dizinin içerikleri değişebilir ama mesaj listesi referans olarak aynı kalmalıdır. Böylece uygulamanız daha kararlı ve öngörülebilir olur.

Gerçek Hayattan Bir Benzetme

Bir kutu düşünün. Kutunun içinde kitaplar var. Kutuyu const ile tanımladığınızda, bu kutunun kendisi sabitlenmiş olur. Ama kutunun içindeki kitapları değiştirmek, yenilerini eklemek veya çıkarmak serbesttir. Kutuyu tamamen alıp başka bir kutuyla değiştirmeye çalıştığınızda ise sistem buna izin vermez.

const kutu = ["Fizik", "Kimya"]; kutu.push("Biyoloji"); // Sorun yok kutu[0] = "Matematik"; // Sorun yok kutu = ["Edebiyat", "Tarih"]; // HATA!

Özetle

  • const ile tanımlanan dizinin kendisi (yani referansı) değiştirilemez.
  • Ama dizinin içeriği (elemanları) rahatlıkla değiştirilebilir.
  • Bu, JavaScript’te karmaşık veri yapılarının kontrolünü kolaylaştırır.
  • Kodun güvenliğini artırır ve programın beklenmedik şekilde bozulmasını önler.

Yeni başlayan biri olarak bu farkı anlaman çok önemli. Çünkü JavaScript’te dizilerle çalışırken neden bazı işlemlerin çalıştığını, bazılarının ise hata verdiğini anlamak ancak bu “referans” mantığını kavramakla mümkün olur.

Unutma: const ile tanımlanan bir dizi, içi değiştirilebilen ama kabuğu sabit kalan bir kaptır. Bu kaptan istediğin kadar malzeme çıkarıp koyabilirsin ama kabın kendisini atıp yerine başka bir kap koyamazsın.

Etiketler

#Eğitimler#JavaScript Dersleri

İlgili Yazılar

Bu konuyla ilgili diğer yazılarımızı da inceleyebilirsiniz

Web Geliştirmede Neden JavaScript'e İhtiyacımız Var?
JavaScript Dersleri

Web Geliştirmede Neden JavaScript'e İhtiyacımız Var?

Web geliştirme, temel olarak üç ana yapı taşı üzerine kuruludur: **HTML, CSS ve JavaScript**. Bu üçlüden **HTML**, sayfanın iskeletini oluşturur, **CSS**, tasarımı ve görsel düzenlemeleri yapar

2 dk
JavaScript'e Giriş: JavaScript Nedir?
JavaScript Dersleri

JavaScript'e Giriş: JavaScript Nedir?

Web geliştirme yolculuğunuzda büyük bir adım atıyorsunuz! HTML ve CSS ile statik web sayfaları oluşturmayı öğrendiniz, ancak şimdi JavaScript ile sayfanıza hareket ve etkileşim katmanını eklemeye hazırsınız. JavaScript, web sayfalarını dinamik hale getiren ve kullanıcı etkileşimlerini yöneten

3 dk
JavaScript Değişkenler (Variables) Nedir?
JavaScript Dersleri

JavaScript Değişkenler (Variables) Nedir?

JavaScript, web geliştirme dünyasının en önemli dillerinden biridir. Dinamik web siteleri, interaktif uygulamalar, oyunlar ve animasyonlar gibi birçok alanda kullanılır. Ancak, bu tür gelişmiş uygulamalar oluşturabilmek için önce JavaScript'in temellerini anlamak gerekir. Bu

4 dk
JavaScript İlkel (Primitive) Veri Tipleri
JavaScript Dersleri

JavaScript İlkel (Primitive) Veri Tipleri

JavaScript, modern web geliştirmede vazgeçilmez bir programlama dilidir. Web sitelerini daha dinamik hale getirmek, etkileşim eklemek ve hatta oyunlar ve uygulamalar geliştirmek için kullanılır. Ancak, bu eğlenceli ve güçlü özelliklere ulaşmadan önce, JavaScript'in temellerin

4 dk
JavaScript'te Sayılar ve Matematiksel Operatörler
JavaScript Dersleri

JavaScript'te Sayılar ve Matematiksel Operatörler

JavaScript, modern web geliştirmede en yaygın kullanılan programlama dillerinden biridir. Bu dilde çalışırken sayılarla sıkça işlem yaparız. İster bir hesap makinesi uygulaması geliştiriyor olun, ister bir oyundaki puan sistemini kodluyor olun, sayılar kaçınılmaz bir parçadır. JavaScri

4 dk
JavaScript'te Boolean Veri Tipi
JavaScript Dersleri

JavaScript'te Boolean Veri Tipi

JavaScript'ı öğrenmeye yeni başlayanlar için veri tipleri oldukça önemlidir. Bu yazıda, en temel veri tiplerinden biri olan **Boolean (mantıksal) değerleri** inceleyeceğiz. Boolean değerleri, programlamada sıklıkla kullanılan ve kodlarımızın man

3 dk