Если вы разработчик JavaScript (JS). Возможно, вы знаете, насколько легко научиться работать с JS. Вероятно, поэтому это один из самых популярных языков программирования во всем мире [1]. Но если вы какое-то время работали над JS, вы могли понять, что это не так мелко, как кажется. Есть концепции, которые нужно знать для плавной езды. Я постараюсь осветить некоторые из них в серии сообщений в блоге.
Итак, мы бы начали с темы, по которой есть 12 серий фильмов с абсолютно хаотичной временной шкалой. Да, я говорю о Людях Икс. И мы попытаемся объяснить, как мы можем предотвратить превращение наших данных в мутанты и в благословение или проклятие;)
В JS есть 8 основных типов данных - число, бит, строка, логическое значение, null, undefined, символ и объект. Если вам здесь не хватает массива, значит, вы должны знать, что массив - это объект. То же самое с функциями, датами, математическими функциями и регулярными выражениями. Из всех типов данных, упомянутых выше, объекты являются изменяемыми.
Возможно, вы запутались насчет изменчивости. Изменчивость в JS имеет место, когда производный дочерний элемент меняет своих родителей. Смешно звучит! вот код:
Запустив этот код в консоли браузера, вы поймете, как дочерний элемент мутирует элементы массива отца, и теперь у отца также есть элемент массива «милый ребенок», который мы вставили в дочерний элемент.
Вот еще один пример:
Это свойство изменчивости может привести к серьезным ошибкам в вашем коде, и в конечном итоге его может стать чрезвычайно сложно отлаживать. Так какое же решение?
Что ж, примите себя, поскольку операторы распространения появляются на сцене , чтобы спасти положение от мутантов.
Синтаксис распространения позволяет развернуть итерацию, например выражение массива или строку, в местах, где ожидается ноль или более аргументов (для вызовов функций) или элементов (для литералов массива), либо выражение объекта должно быть раскрывается в местах, где ожидается ноль или более пар ключ-значение (для объектных литералов).
- Веб-документы MDN
Если вас путают слишком много слов, давайте рассмотрим пример:
Вы заметили, как вместо чисел в a и b мы передали массив с помощью оператора распространения.
Точно так же мы могли бы использовать оператор распространения с объектами JS. Что мы обсудим позже.
Теперь вернемся к первоначальной цели - остановить мутацию в JS. Мы бы попытались решить варианты использования, определенные на рисунках 1 и 2.
Чтобы остановить мутацию в массиве при добавлении элемента, мы могли бы сделать следующее:
Чтобы остановить мутацию при удалении элемента из массива, мы могли бы сделать следующее:
В приведенном выше методе мы использовали свойство .filter, которое в основном фильтрует все элементы массива Father, что не является «красивым». Таким образом, дочерний элемент не получает значение по ссылке, а получает только значения от отца.
Теперь поговорим о Объектах. Допустим, у нас есть следующий объект.
Теперь в объект выше мы хотим добавить еще один ключ «dob» и создать новую переменную.
или изменение значения существующего ключа
В приведенных выше методах мы использовали операторы распространения в объекте, что технически похоже на расширение всех значений пары ключей.
Надеюсь, это краткое введение в неизменяемость было информативным. Неизменяемость - важная концепция, когда вы работаете с библиотеками JS, такими как React JS. Так что бейте и спасите свой JS-код от мутации!
Использованная литература:
Stackoverflow Insights
https://learnworthy.net/stackoverflow-listed-the-most-commonly-used-programming-languages/
MDN Mozilla
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Автор
Сандип Гантаит
http://www.sandeepg.co.in