Sobes.tech
Junior

Bağlantı ile iletimin ne olduğunu nasıl anlıyorsun?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te temel veri tipleri (dizgeler, sayılar, boolean değerler, null, undefined, Symbol, BigInt) değer ile iletilir. Bu, atama veya fonksiyona geçerken değerin kendisinin kopyalandığı anlamına gelir.

Nesneler (diziler ve fonksiyonlar dahil) referans ile iletilir ve kopyalanır. Aslında, nesnenin kendisi değil, onun depolandığı bellek alanına referans kopyalanır.

// Değer ile iletim
let a = 10;
let b = a; // 10 değeri kopyalanır
b = 20;
console.log(a); // 10, 'b' değişikliği 'a'yı etkilemez

// Referans ile iletim
let obj1 = { value: 10 };
let obj2 = obj1; // Nesneye referans kopyalanır
obj2.value = 20;
console.log(obj1.value); // 20, 'obj2' üzerinden yapılan değişiklikler 'obj1'i etkiler çünkü ikisi aynı nesneye işaret eder

Bir nesne fonksiyona geçirilirken, fonksiyon bir referans kopyası alır. Nesnenin özelliklerini değiştirmek, orijinal nesneyi etkiler çünkü referans aynıdır. Ancak, fonksiyon içinde değişken yeni bir nesneye atanırsa, orijinal nesne değişmeden kalır, çünkü referans başka bir bellek alanına işaret eder.

function modifyObject(obj) {
  obj.newValue = 30; // Orijinal nesneyi değiştirir
}

function assignNewObject(obj) {
  obj = { anotherValue: 40 }; // 'obj' değişkeni artık yeni bir nesneye işaret eder
}

let myObject = { initialValue: 10 };
modifyObject(myObject);
console.log(myObject); // { initialValue: 10, newValue: 30 }

let anotherObject = { initialValue: 10 };
assignNewObject(anotherObject);
console.log(anotherObject); // { initialValue: 10 }, orijinal nesne değişmedi