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