Здравейте всички,

Знаете ли разликата между предаване по стойност и предаване по референция в 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