Из Википедии XY Проблема вход.
Реальная проблема («X») человека, просящего помощь, скрыта, потому что вместо того, чтобы прямо спрашивать о проблеме X, они спрашивают, как решить вторичную проблему («Y»), который, по их мнению, позволит им решить проблему X.
В течение последнего месяца или около того я делал карточную игру в качестве личного проекта. Я использую JS и Phaserjs Игровой двигатель, чтобы стать лучше в обоих, потому что почему бы и нет. Сегодня вечером я работал над созданием пирамиды карт, создавая абстракцию. Когда вы нажимаете на карту, она получает массив выбранных карт, которые она покрывает. Затем он переходит на все детские карты и удаляет карту щелчков из списка родителей детей. Когда родительский список любой карты составляет нулевой длины, карта идет лицом вверх.
Но это не сработает. Вместо того, чтобы снять одну карту в качестве родителя, она просто полностью очистила массив. Почему? Что, черт возьми, не так с вами?
Но ждать. Анкет Анкет Какая? Когда JavaScript Array.filter Беги, Все Соответствующие переменные становятся неопределенными? Что почему?
Вот фотография Chrome Devtools Перед фильтр , А потом вот это после фильтр Анкет
Как вы можете видеть в списке переменных справа, JavaScript потерял свое мнение и очищает мои переменные по, казалось бы, без причины (или я так думал).
Так что я копаю и копаю. Интернет -поиск, информация о Array.filter , и т. Д. И ничего не работает. Наконец я сломаюсь и публикую, чтобы сложить переполнение. Хороший парень (редкость в наши дни) довольно быстро запрыгивает на комментарии и делает несколько предложений, включая пару ссылок на переменную область.
. . Вы видите это? проблема XY?
Я потратил хорошие 5 часов, пытаясь выяснить, почему мои переменные очищаются, но мне напомнили, что они полностью не в силе в функции обратного вызова Array.filter Анкет Я имею в виду, я знал, как это должно работать Но я был настолько зонирован на «исчезающем дерьме», что не мог видеть лес для деревьев.
Еще лучше (или, что еще хуже, в зависимости от того, как вы на это смотрите), с шляпами, я полностью пропустил Фактическое проблема. Я полностью забыл, что настоящий вопрос не имел никакого отношения к переменной области, включающей функции обратного вызова. Это было о расчистке массива.
Как только я напомнил себе о том, что была истинная проблема, потребовалось всемогущее несколько секунд, чтобы исправить это.
Истинное решение? Посмотрите на строку 131 на изображениях.
Мораль истории такова:
Когда вы слышите копыта, подумайте о лошадях, а не зебрах.
Если у вас есть невозможно Проблема, когда что -то надежное, кажется, полностью исчезло от глубокого конца, вы, скорее всего, смотрите не в том месте для этой проблемы. Сделайте шаг назад, дефокусировку на минуту, возьмите резиновая утка С вашего стола и хорошего расслабленного разговора.
Оригинал: “https://dev.to/ogrotten/xy-problem-in-the-wild-2ge9”