JavaScript: передача по значению или по ссылке?

Перейти в телеграм, чтобы получить результаты теста
Пройдите тест, узнайте какой профессии подходите
Вам подходит профессия:
Аналитик данных
Основные характеристики профессии:
не нужно общаться с людьми
логика
анализ
поиск закономерностей
работа с числами
Построим личный план перехода в профессию для вас бесплатно
- убедитесь, подходит вам профессия или нет
- получите оценку своих навыков и шансов освоить профессию
- забронируем за вами скидку 55% на обучение, пока думаете
Позвоним вам в течение часа — не пропустите звонок
Чем занимается специалист
Специалист создает все онлайн-продукты, программы, приложения, игры и сайты, которыми вы пользуетесь каждый день.
Создает — значит описывает последовательность действий на специальном языке программирования. Настраивает действия, что должно произойти, если пользователь нажмет на кнопку.
Средняя зарплата начинающего специалиста в первый год работы:
от 50 000 ₽
Что надо знать и уметь, чтобы выучиться на аналитика:
- базовое школьное образование
- уверенные навыки работы с компьютером
- опыт выполнения задач в конкретные сроки
Глубокие знания математики или английского не нужны
Почему мы рекомендуем вам эту профессию
Ваш скрытый талант:
наблюдательность
Часто возникает путаница в понимании, как JavaScript передает аргументы в функции — по значению или по ссылке. Для начала, сгенерируем пример: В этом
Часто возникает путаница в понимании, как JavaScript передает аргументы в функции — по значению или по ссылке. Для начала, сгенерируем пример:
let a = 1;
let b = a;
b++;
console.log(a); // Вывод: 1
console.log(b); // Вывод: 2
В этом примере, переменная b
получает значение переменной a
, затем это значение изменяется, но исходное значение переменной a
при этом не меняется. Это подтверждает, что примитивные типы данных в JavaScript передаются по значению.
Теперь рассмотрим случай с объектами:
let obj1 = { prop: 1 };
let obj2 = obj1;
obj2.prop++;
console.log(obj1.prop); // Вывод: 2
console.log(obj2.prop); // Вывод: 2
Здесь, на первый взгляд, кажется, что объекты передаются по ссылке, так как изменение свойства объекта obj2
приводит к изменению свойства исходного объекта obj1
.
Однако, это не совсем так. В JavaScript все данные передаются по значению. В случае с объектами, значение — это ссылка на объект. Поэтому, когда мы присваиваем obj2 = obj1
, мы копируем значение ссылки на объект, а не сам объект. В результате обе переменные указывают на один и тот же объект в памяти, и изменение свойств этого объекта через одну переменную влияет на его отображение через другую переменную.
Подводя итог, можно сказать, что JavaScript является языком с передачей данных по значению. Однако в случае с объектами, это значение представляет собой ссылку на объект.
Добавить комментарий