Поэтому я начал свой первый маленький проект программирования, простой игра памяти. С помощью проб и ошибок у меня наконец-то была рабочая игра, и я решил, что хочу добавить несколько веселых функций. Легкий кресться лимона сжимает.
Я быстро понял для некоторых функций, которые мне нужно сбросить свой Gameboard другим способом, чем просто обновлять веб-сайт, а не обстоятельную сделку. Я сделал другую функцию сброса, и она вроде сработала … Есть две карты карты, которые он передает в начале каждой игры, но каждый или два сбрасываются, она перестанет работать. Я консоль. И в конечном итоге я обнаружил, что мои латины для палубы карт отображаются пустыми либо первым или вторым сбросом. Почему?
Я играл как солидный 10 часов Растите более разочарованные поиск этой ошибки. А потом свет в конце туннеля я нашел что-то случайное на стек, который вызвал небольшую идею. Может ли изменения, сделанные для моего второго массива, влияют на мой оригинальный массив. Спойлер: Да, это сделал.
Я не имел абсолютно никакой идеи, что это происходит:
const array1 = [1, 2, 3, 4]; let array2 = []; array2 = array1; array2.push(5) console.log(array1); // Output: 1, 2, 3, 4, 5 console.log(array2); // Output: 1, 2, 3, 4, 5
Я подумал, когда я нажимаю в Array2, только Array2 получает новое значение, я должен был знать лучше, чем просто предположить …
Поэтому я добавил функцию карты, чтобы дать значения второму массиву. (У меня были сомнения, это будет работать с моей удачей за последние 10 часов.)
I Console.logged мои массивы и радостный случай! Он сбрасывается должным образом каждый раз. Этот эмоциональный роликовый уголок жучка был окончательно над! Я мог бы даже пролить слезы в облегчении.
const array1 = [1, 2, 3, 4];
let array2 = [];
array2 = array1.map((num) => { return num; });
array2.push(5);
console.log(array1); // Output: 1, 2, 3, 4
console.log(array2); // Output: 1, 2, 3, 4, 5
Кстати, это не делает это с регулярными переменными, которые я заметил.
Я играл в 5 раз, чтобы убедиться, что сброс на самом деле будет работать каждый раз. Но теперь я могу наконец спать ночью.
Если кто-то хочет проверить свой код Newbie здесь: https://github.com/1Tolv2/Mushroom-Memory
Придавать Если кто-то знает, почему JavaScript делает это, если есть веская причина, пожалуйста, дайте мне знать, потому что я не понимаю.
Оригинал: “https://dev.to/1tolv2/my-first-reeeeally-annoying-discovery-i-javascript-4g19”