JavaScript'te Dizilerin ve Nesnelerin Eşitliği

Dec 13 2022
JavaScript'te, çift eşittir işareti(==) ve üçlü eşittir işareti(===) veya katı eşitlik, iki değerin eşitliğini kontrol etmek için kullanılan iki işleçtir. Çift eşittir işaretinin, üçlü eşittir işaretinden farklı olarak yalnızca iki değerin eşitliğini kontrol ettiğini ancak aynı türde olup olmadıklarını umursamadığını hatırlıyoruz.

JavaScript'te, çift eşittir işareti(==) ve üçlü eşittir işareti(===) veya katı eşitlik, iki değerin eşitliğini kontrol etmek için kullanılan iki işleçtir. Çift eşittir işaretinin, üçlü eşittir işaretinden farklı olarak yalnızca iki değerin eşitliğini kontrol ettiğini ancak aynı türde olup olmadıklarını umursamadığını hatırlıyoruz. Örneğin:

// double equality
const num = 2
const num2 = '2'
console.log(2==2)

// output will be true

// triple equality
const num = 2
const num2 = '2'
console.log(2===2)

// output will be false

Ancak bu işaretlerden herhangi birini bir diziye veya nesneye uyguladığımızda, davranış garipleşir. Örneğin:

const obj1={
 name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2={
 name: 'kenneth',
country:'Nigeria',
age:26
}
console.log(obj1 == obj2)
//this outputs false
console.log(obj1 === obj2)
// this still outputs false

Bunun nedeni, nesnelerin ve dizi değişkenlerinin kendilerine atanan belirli değerleri doğrudan depolamamaları, bunun yerine bellekte dizinin veya nesnenin depolandığı orijinal yere bir referans depolamalarıdır. Doğru anlamak için aşağıdaki şemaya bir göz atın:

Yukarıdaki resimden de görebileceğimiz gibi, “obj1” değişkeni, gerçek nesnenin saklandığı hafızanın referansını saklar, bu durumda bu, “obj2” değişkeni ile aynı olan 12456754'tür (bu sayıyı açıklama amacıyla oluşturdum). bu aynı zamanda gerçek nesnenin hafızada saklandığı 98537562 olan hafızanın referansını da saklar. Obj1'in sakladığı değerin (12456754) obj2'nin sakladığı değerden (98537562) farklı olduğunu görebiliriz. Bu şekilde düzgün yazılabilir:

const obj1 = 12456754;
const obj2 = 98537562;

İki nesnenin veya dizi değişkeninin aynı olabilmesinin tek yolu, yalnızca bir diziye veya nesne değişkenine (obj1) eşit veya yeni bir değişken (obj2) atamamızdır. Örneğin:

const obj1={
 name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2 = obj1;

console.log(obj1 == obj2)
// this will output true
console.log(obj1 === obj2)
// this will still be true

Not: Örneklerimde sadece nesneleri kullandım ama aynı sebep ve açıklama hala diziler için geçerli.