Məlumatların ötürülməsi referans və dəyər vasitəsilə necə işləyir?
sobes.tech Süni İntellekt
AI-dan cavab
Məlumatların dəyər (by value) və referans (by reference) vasitəsilə ötürülməsi, funksiyaya ötürülərkən və ya ona təyin edilərkən orijinal dəyişənin necə dəyişdiyini müəyyən edir.
Dəyər vasitəsilə ötürmə:
Dəyişənin dəyərinin nüsxəsi yaradılır. Bu nüsxədə funksiyada və ya təyin etmə zamanı edilən hər hansı dəyişiklik orijinal dəyişəni təsir etmir. Bu, primitiv məlumat tipləri üçün uyğundur (rəqəmlər, sətirlər, boolean dəyərlər, null, undefined, Symbol, BigInt).
// Dəyər vasitəsilə ötürmə
let a = 10;
function modifyValue(num) {
num = 20; // Nüsxə dəyişir
}
modifyValue(a);
console.log(a); // 10 göstərəcək - orijinal dəyər dəyişməyib
Referans vasitəsilə ötürmə:
Bu, dəyərin özü deyil, ona işarə edən (yaddaş ünvanı) referansın ötürülməsidir. Bu referans vasitəsilə edilən dəyişikliklər orijinal dəyişəni təsir edir. JavaScript-də bu, obyektlər üçün (massivlər və funksiyalar daxil olmaqla) istifadə olunur. Anlamalısınız ki, obyektin özü deyil, bir referans ötürülür. Bir parametr funksiyada yenidən təyin olunduqda, referansa yeni dəyər verilir, amma orijinal dəyişən dəyişmir.
// Obyekt üçün referans vasitəsilə ötürmə
let obj1 = { value: 10 };
function modifyObject(obj) {
obj.value = 20; // Ob'ektin xüsusiyyəti referans vasitəsilə dəyişir
}
modifyObject(obj1);
console.log(obj1.value); // 20 göstərəcək - orijinal obyekt dəyişdi
// Parametrin yenidən təyin olunması nümunəsi
let obj2 = { value: 10 };
function reassignObject(obj) {
obj = { value: 30 }; // obj indi yerli funksiyada yeni obyektə referans edir
}
reassignObject(obj2);
console.log(obj2.value); // 10 göstərəcək - orijinal obyekt dəyişməyib
| Xüsusiyyətlər | Dəyər vasitəsilə ötürmə | Referans vasitəsilə ötürmə |
|---|---|---|
| Nə ötürülür | Dəyərin nüsxəsi | Referans (həll) |
| Orijinal üzərində təsir | Yox | Bəli (xüsusiyyətlər dəyişdikdə) |
| JS məlumat tipləri | Primitivlər | Obyektlər |