Введение

Одна из моих любимых тем в программировании — это передача по значению и по ссылке. Это концепция, которая была задана в одном из моих технических интервью, и это то, что вам следует знать, если вы еще этого не сделали.

Разница между передачей по ссылке и передачей по значению заключается в том, что передача по значению создает новое пространство в памяти и делает копию значения, тогда как передача по ссылке - нет. Вместо создания копии передача по ссылке делает именно то, на что она похожа; на значение, хранящееся в памяти, ссылаются.

Важное примечание 🔎. Значения Object и Array передаются по ссылке, а значения Primitives передаются по значению.

Что такое примитивы?

  • Струны
  • Числа
  • Булевы значения
  • Неопределенный
  • Нулевой

Передача по ссылке:

Объекты:-

Сначала начните с создания объекта и сохраните его в переменной kamlesh. Объект Kamlesh будет содержать свойства «ключ-значение», такие как имя, возраст, пол и навыки кодирования. Давайте посмотрим ниже.

мы создаем еще одну переменную с именем kamleshNewObj и устанавливаем ее равной объекту kamlesh.

🤔 В этот момент вы, вероятно, подумали, что теперь это два отдельных объекта, для которых вы теперь можете модифицировать как хотите. угадайте, что?…

kamleshNewObj object НЕ является копией объекта, хранящегося внутри kamlesh variable. Вместо этого переменная kamleshNewObj ссылается на исходный объект kamlesh.

Это означает, что если вы решили отредактировать объектkamleshNewObj, вы фактически изменяете объект kamlesh!

Как вы можете видеть на втором примере изображения, свойство name обоих объектов имеет значение "Coding master".

Массивы:-

Массивы также работают так же, как объекты. Давайте посмотрим на пример, чтобы легко понять.

Мы получим тот же результат, что и в примере с объектом.

Мы создадим переменную с именем kamleshSkills и инициализируем ее массивом. Затем мы создадим новую переменную с именем kamleshNewSkills и присвоим ей значение kamleshSkills.

Однако, когда мы пытаемся добавить новый элемент в массив, хранящийся в переменной kamleshNewSkills, это также повлияет на массив kamleshSkills. Опять же, это потому, что мы имеем дело только с one array and NOT two separate copies of an array. Переменная kamleshNewSkills ссылается на тот же массив, который был инициализирован в переменной kamleshSkills.

Передача по значению:

примитивные значения, такие как числа или строки, фактически создают копию, в отличие от объектов и массивов. Здесь мы создаем переменную const age и присваиваем ей значение 24. Мы также создадим функцию с именем ageNextYear, которая принимает аргумент и добавляет к этому аргументу 1. Параметр, который мы будем передавать, — это переменная age.

передача по значению, когда мы передаем переменную age в функцию и возвращаем значение 25 , WE ARE NOT CHANGING исходное значение переменнойage.

Заключение

Концепция передачи по значению и передачи по ссылке полезна, потому что, если вы пишете код и хотите установить одну переменную равной другой переменной или в В приведенном выше примере передайте переменную в функцию в качестве аргумента, вам нужно знать, будет ли значение передаваться по значению или по ссылке. Это поможет вам избежать ошибок при работе с вашими данными.