@Egche
Ученье-свет.

Каковы особенности переменных в ES6, в чем ошибка?

...
 ).then(
   menu => {
      let a = menu;
      let b = func(menu);

      // здесь почему то а = b = reverseMenu
      // и menu = reverseMenu

      function func(m) {
         ...
         return reverseMenu;
      }
   }
)


Есть идеи?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
@DenJel
Нужен код функции func, скорее всего Вы меняете исходный объект, а не его копию.

UPDATE: А все нашел у вас комментариях, ну разумеется вы меняете входной объект меню, в начале функции mergerMenu необходимо сделать чтото типо :

const newMenu = Object.assign( {}, menu )

и потом его уже возвращать из функции

return newMenu;

ну или если уж вы любитель es6
const newMenu = { ...menu }

UPDATE: все ключи объекта с таким подходом копируются по ссылке, если вам нужно абсолютно новое меню, нужно делать глубокое копирование, а это процесс довольно ресурсоемкий. Советую посмотреть на Immutable.js
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы