JavaScript Dersleri

JavaScript’te Dizilerin Karşılaştırılması

eminbasbayan

eminbasbayan

3 dk okuma
JavaScript’te Dizilerin Karşılaştırılması
🔍 Büyütmek için tıklayın

JavaScript’te program yazarken bazen iki verinin “aynı” olup olmadığını kontrol etmemiz gerekir. Bu, kullanıcıdan gelen veriyle elimizdeki değeri karşılaştırmak, iki listeyi kontrol etmek veya aynı şeyi temsil edip etmediklerini sorgulamak için yapılır. Ancak, bu tür karşılaştırmalarda özellikle diziler (arrays) ile çalışırken dikkatli olunmalıdır. Çünkü diziler, JavaScript’te beklediğiniz gibi karşılaştırılmaz.

Bu yazıda, sadece dizilerin karşılaştırılma mantığını ve bellekte nasıl saklandıklarını anlamaya odaklanacağız. Bu konuyu sade örneklerle açıklayacağız.

1. Basit Değerler Karşılaştırıldığında

JavaScript’te sayılar ve metinler gibi temel (primitive) veri türlerini karşılaştırmak oldukça nettir. Örneğin:

"kitap" === "kitap" // true 5 === 5 // true

Burada === operatörü kullanılıyor. Bu operatör, hem değerin hem de veri türünün aynı olup olmadığını kontrol eder. İki taraf da aynıysa, sonuç true döner.

2. Dizilerde İşler Değişir

Şimdi aynı mantıkla iki dizi karşılaştıralım:

["güneş", "ay"] === ["güneş", "ay"] // false

İlk bakışta bu iki dizi tamamen aynı görünüyor. İçlerinde aynı kelimeler var, aynı sırada dizilmiş. Ama JavaScript bu karşılaştırmayı false olarak değerlendirir.

Neden? Çünkü JavaScript, dizilerin içeriğini değil, onların bellekteki yerlerini karşılaştırır.

3. Bellek ve Referans Mantığı

TEXT?TEXT?

Basit veriler bellekte doğrudan saklanır. Örneğin:

let x = 10;

Burada x, doğrudan değeri yani 10’u bellekte tutar. Ama diziler gibi karmaşık yapılar doğrudan saklanmaz. Bunun yerine, JavaScript bellekte dizinin bulunduğu yeri, yani referansını saklar.

Örneğin:

let liste = [1, 2, 3];

Burada liste, dizinin içeriğini değil, o dizinin bellekteki adresini saklar. Yani, bir nevi "bu dizi şurada duruyor" demiş olur.

4. Aynı Referansı Paylaşan Değişkenler

Bu durumu daha iyi anlamak için bir örnek:

let meyveler = ["elma", "armut"]; let sepet = meyveler;

Burada sepet, meyveler değişkeninin tuttuğu diziyi yeni baştan oluşturmaz. Bunun yerine, aynı bellekteki diziye başka bir isimle işaret eder.

Eğer şimdi meyveler.push("çilek") yaparsak, sepet de bu değişiklikten etkilenir çünkü ikisi de aynı diziyi gösteriyor.

console.log(sepet); // ["elma", "armut", "çilek"]

Aynı şekilde:

sepet.pop(); // "çilek" çıkar console.log(meyveler); // ["elma", "armut"]

Yani, ikisinden birinde yapılan değişiklik, diğerine de yansır. Çünkü ikisi de aynı referansa sahiptir.

5. Gerçekten Aynılar mı? JavaScript Nasıl Anlar?

Bu tür durumlarda === operatörü çalışır:

meyveler === sepet // true

Çünkü JavaScript şunu sorar:

Bu iki değişken aynı bellekteki adresi mi işaret ediyor?

Eğer cevap evetse, === sonucu true olur. Ama içeriği birebir aynı olan ama farklı yerlerde tutulan diziler varsa:

let a = [7, 8, 9]; let b = [7, 8, 9]; console.log(a === b); // false

Bu iki dizi görünüşte aynı ama bellekte iki ayrı yerde bulunuyor. Bu yüzden JavaScript onları aynı kabul etmez.

6. İçeriği Karşılaştırmak Kolay Değil

Eğer iki dizinin içeriği aynı mı diye kontrol etmek istiyorsanız, JavaScript bunu sizin yerinize otomatik olarak yapmaz. Siz manuel olarak her elemanı karşılaştırmalı veya farklı yöntemler (örneğin JSON.stringify) kullanmalısınız.

Ama bu yazıda yalnızca referans temelli karşılaştırmalar ele alındığı için, bu konuya daha fazla girmiyoruz.

Sonuç

JavaScript’te dizilerin karşılaştırılması, göründüğü kadar basit değildir. İki dizi aynı içeriğe sahip olsa bile, farklı referanslara sahipse === veya == ile yapılan karşılaştırma false döner. Sadece aynı diziyi gösteren iki değişkenin karşılaştırması true olur.

Bu nedenle, JavaScript’te dizilerle çalışırken şunlara dikkat etmek gerekir:

  • === ve == operatörleri, dizilerin içeriğini değil, bellekteki adresini karşılaştırır.
  • Aynı içeriğe sahip iki ayrı dizi, JavaScript’e göre “aynı” değildir.
  • Bir diziyi başka bir değişkene atarsanız, aslında sadece aynı yeri işaret etmiş olursunuz.
  • Değişkenlerden birinde yapılan değişiklik, diğerini de etkiler.

Bu farkları erken öğrenmek, JavaScript’te hata yapmamanız açısından oldukça önemlidir.

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