<MyRusakov.ru />

Финансовая грамотность от А до Я

Финансовая грамотность от А до Я

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

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

Помимо самого курса Вас ждёт ещё бесплатный ценный Бонус: «Ранний выход на пенсию». В рамках этого Бонуса Вы узнаете, какой должен быть капитал конкретно в Вашем случае, варианты его получения, а также какие есть стратегии вывода капитала на пенсии и где их можно протестировать.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Операторы Spread&REST

Операторы Spread&REST

Оператор разворота Spread добавляет данные из одного объекта в другой объект. Например данное свойство поможет создавать копии объектов, которые можно будет модифицировать независимо от оригинального объекта. Чтобы понять, почему нельзя просто скопировать один объект, дать копии новое имя и на этом все, нужно разобраться, каким образом объекты передаются в переменные.


Пример передачи примитивных данных в переменную по значению:

В программировании переменная - это коробка для хранения данных. Все поступающие данные на хранение делятся на примитивные и объекты. Посмотрим, что у нас лежит в переменных (a, b) после некоторых математических манипуляций. Присвоим переменной b значение переменной a (5) и прибавим 5. Увиденный результат в консоли вполне ожидаемый.

let a = 5;
    b = a;
    b = b + 5;

console.log(a); // число 5 хранится в переменной a
console.log(b); // 10 хранится в переменной b


Пример передачи объектов в переменную по ссылке:

Создадим объект с данными: ключ: значение, сделаем копию этого объекта. Теперь у нас есть два объекта с одинаковыми значениями. Рассуждая логически, мы рассчитываем на то, что модифицируя данные в копии, оригинал останется нетронутым. Для эксперимента заменим значение ключа a на новое и выведем содержимое обоих объектов в консоль. К нашему удивлению значения в оригинале так же изменились, хотя мы оригинал вообще не трогали. Отсюда можно сделать вывод: в копию объекта попадают не значения, а ссылка на оригинальный объект. Поэтому думая, что мы изменяем копию, на самом деле меняется оригинал.

let object {
    a: 5,
    b: 1
};
// В переменную copy передаются не сами значения, а ссылка на объект object.
let copy = object;
copy.a = 10;

console.log(copy); // {a: 10, b:1}
console.log(object); // {a: 10, b:1}

Когда мы работаем с примитивными типами данных (строки, числа, логические значения), то они передаются в переменную по значению. Когда же вы работаете с какими-то объектами (массивы, функции), тогда они передаются в переменную по ссылке. Получается так, что делая изменения в копии объекта copy, мы модифицируем не копию, а оригинал.

Невольно возникает вопрос, как же тогда сделать, чтобы изменения в копии объекта не затрагивали оригинал? Для этого отлично подходит оператор разворота Spread.

Spread оператор

Оператор Spread разворачивает структуру и превращает ее в набор каких-то данных. Посмотрим на примере, как это работает. Создадим первые два массива с элементами, а в третий массив занесем только названия переменных с тремя точками и пару элементов. Эти три точки и есть Spread оператор, который разворачивает внутри массива отдельные значения. Синтаксис в виде троеточия позволит нам вытащить элементы из одного массива и развернуть их в новом массиве.


Первый пример показывает, как просто можно объединить несколько массивов в один. В массив all попали данные из двух массивов.

const media = ['instagram', 'telegram', 'twitter'],
users = ['user_inst', 'user_tel', 'user_twit'],
all = [...media, ...users, 'vk', 'facebook'];

console.log(all);

// результат выводится в консоли
[
'instagram',
'telegram',
'twitter',
'user_inst',
'user_tel',
'user_twit',
'vk',
'facebook'
]


Во второй примере Spread оператор развернул копию массива num.

const num = ["1", "5", "7"];
const copy_num = [...num];
    console.log(copy_num);
    // [ '1', '5', '7' ]


В третьем примере Spread оператор создал копию объекта.

let coords = { x: 34, y: 42 };
let clone_coords = { ...coords };
    console.log(clone_coords);
    // в копии то же самое { x: 34, y: 42 }

Rest оператор

У Spread оператора есть антагонист, который работает схожим образом, только наоборот и называется он оператором сворачивания Rest. У нас есть функция res, которая в виде аргументов принимает три значения: Вызовем данную функцию и посмотрим, что у нас в консоли. Если перед последним аргументом вставить ..., то к остальным аргументам можно получить доступ через массив rest.

function res(arg1, arg2, ...rest) {
    console.log(arg1); // Первый аргумент
    console.log(arg2); // Второй аргумент
    console.log(rest[0]); // Третий
    console.log(rest[1]); // Четвертый
}

Итоги

Несмотря на то, что Rest и Spread операторы похожи друг на друга, но фактически они выполняют две абсолютно разные функции.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.