Давайте воспользуемся LeetCode 1051. Средство проверки высоты, чтобы продемонстрировать разницу между двумя разными подходами.

В моем решении я использовал глубокую копию для создания нового массива вместо ссылки на исходный массив. Если я использовал неглубокую копию для копирования массива высот, это вызовет проблему в этом случае. Проблема в том, что когда мы вызываем функцию sort() для копии, она также обновляет элементы высоты. Причина в том, что массив в JavaScript является ссылочным значением. Когда вы используете «=» в let copy = heights , переменная копирования получает только ссылку на расположение исходного массива в памяти и фактически не создает новый экземпляр в памяти. Мы также называем это действие изменяемым действием.

Почему изменяемые данные плохи?

Проблема с LeetCode 1051. Height Checker - одна из причин.

Когда мы пытаемся изучить различия между текущими данными и данными, которые были изменены в текущие данные. неизменяемая структура данных играет здесь решающую роль. Неизменная структура данных также играет важную роль в современных веб-технологиях, таких как React.js и Redux.js.