Здравейте всички,
Знаете ли разликата между предаване по стойност и предаване по референция в JavaScript?
Разбирането на тази концепция е важно, защото засяга начина, по който променливите се предават между функциите.
Стойността typeof, присвоена на променлива, решава дали стойността да се съхранява с присвояване по стойност или присвояване по препратка
При присвояване на променлива, скаларните примитивни стойности (число, низ, булево, недефинирано, нула, символ) се присвояват по стойност, а съставните стойности (обект, масив) се присвояват по препратка
При предаване по стойност, копие на стойността на променлива се предава на функция. Всички промени, направени в стойността във функцията, не засягат оригиналната променлива извън функцията. Например:
нека num = 5;
функция double(num) {
num *= 2;
return num;
}
console.log(double(num)); // Изход: 10
console.log(num); // Изход: 5
```
Тук функцията „double“ взема копие на променливата „num“ и я умножава по 2, но оригиналната променлива „num“ остава непроменена.
При преминаване по референция препратката към оригиналната променлива се предава на функция. Всички промени, направени в препратката във функцията, засягат оригиналната променлива извън функцията. Например:
```
let arr = [1, 2, 3];
функция addNum(arr) {
arr.push(4);
return arr;
}
console.log(addNum(arr)); // Изход: [1, 2, 3, 4]
console.log(arr); // Изход: [1, 2, 3, 4]
```
Тук функцията `addNum` взема препратка към променливата `arr` и добавя нов елемент към нея. Оригиналната променлива `arr` също се променя в резултат.
Така че следващия път, когато предавате променливи между функции в JavaScript, уверете се, че знаете дали използвате предаване по стойност или предаване по референция!
#javascript #програмиране #webdevelopment #passbyvalue #passbyreference