Veri iletimi referans ve değer olarak nasıl çalışır?
sobes.tech yapay zeka
AI'dan gelen yanıt
Değer aktarımı (by value) ve referans (by reference) nasıl değiştiğini belirler, orijinal değişkenin fonksiyona geçirilmesi veya ataması sırasında.
Değer ile aktarım:
Değişkenin değeri kopyalanır. Bu kopya üzerinde fonksiyon içinde veya atama sırasında yapılan herhangi bir değişiklik, orijinal değişkeni etkilemez. Primitif veri tipleri (sayılar, dizgiler, boolean değerler, null, undefined, Symbol, BigInt) için uygundur.
// Değer ile aktarım
let a = 10;
function modifyValue(num) {
num = 20; // Kopya değiştirilir
}
modifyValue(a);
console.log(a); // 10 yazdırır - orijinal değer değişmedi
Referans ile aktarım:
Değerin kendisi değil, bu değere işaret eden (bellekteki adres) bir referans aktarılır. Bu referans aracılığıyla yapılan değişiklikler, orijinal değişkeni etkiler. JavaScript'te nesneler (diziler ve fonksiyonlar dahil) için kullanılır. Anlamanız gereken önemli nokta, nesnenin kendisinin değil, bir referansın aktarıldığıdır. Bir fonksiyon içindeki parametre yeniden atanırsa, referansa yeni bir değer atanır, ancak orijinal değişken değişmez.
// Nesne ile referans aktarımı
let obj1 = { value: 10 };
function modifyObject(obj) {
obj.value = 20; // Nesnenin özelliği referansla değiştirilir
}
modifyObject(obj1);
console.log(obj1.value); // 20 yazdırır - orijinal nesne değişti
// Nesne aktarımında parametrenin yeniden atanması örneği
let obj2 = { value: 10 };
function reassignObject(obj) {
obj = { value: 30 }; // obj artık fonksiyonun yerel kapsamındaki yeni nesneye referans eder
}
reassignObject(obj2);
console.log(obj2.value); // 10 yazdırır - orijinal nesne değişmedi
| Özellik | Değer ile aktarım | Referans ile aktarım |
|---|---|---|
| Ne aktarılır | Değerin kopyası | Değere referans |
| Orijinal üzerindeki etkisi | Hayır | Evet (özellikler değiştirildiğinde) |
| JS veri tipleri | Primitifler | Nesneler |