개인과제) 오늘 만난 문제
01. push가 안 됨 ㅋㅋ
문제 발견
문제 발생 문제 발생!!! 이제 몬스터 생성을 하는 로직 같은 경우는, setInterval을 통해 임의로 지정한 시간 마다 spawn 함수를 실행하고, 그 함수에서 event 메세지를 보내 서버에서 검증을 하구, 그리고 유효한 데이터를 클라에 응답!! 클라는 응답받은 데이터를 통해 Monster 인스턴스를 생성하고, 생성된 인스턴스를 monsters 배열에 넣어준다!! 근데 문제는 넣어주는 부분에서 도통 push가 정상 작동을 하지 않는 것이다!! 사진은 monsters 배열을 출력해본 건데, 이상하게도 출력 당시엔 배열에 요소가 들어오지만, 이상하게도 길이가 0으로 찍히는, 즉 요소가 있는디 요소가 없다고 하는 이상한 현상이 발견되고 있었다!!
첫 콘솔 : monsters 배열 요소 확인, 생성된 인스턴스들 참조 일치하는 지 확인
배열을 JSON.stringfy()에 넣어서 출력하면 내용물을 좀 더 상세히 볼 수 있다길래, monsters 배열을 넣어 출력해봤고, 인스턴스 확인은 혹시 인스턴스가 같은 객체를 참조하고 있나 해서, 인스턴스를 둘 생성해서 비교 연산을 해본 결과다!! 상단의 빨간 박스는 첫 번째 스테이지의 몬스터가 같는 속성 값들이고, 하단의 빨간 박스는 두번째 스테이지의 몬스터가 같는 속성 값으로, 분명히 정상 작동하고 있었고, 내 상식선에선 두 값이 같지 않으니 push가 정상적으로 작동해야만 했다..... 심지어 둘이 같은 지 비교도 false라는데.... 그런데 자세히 보니 "image" 프로퍼티가 빈 객체인 걸 발견!!!
그래서 저 "image" 속성을 확인해보니, 의외로 정상적인 image 객체들이 들어 가있었다...
그래서 혹시 배열 채로 넣어서 문제가 생겼나 해서, 배열에서 필요한 요소만 뽑아 넣어봤는데, 역시 전달이 잘 되는 모습...
두번째 콘솔 : push 정상 작동 여부 확인, monsters 변수 자료 타입 배열 맞는지 확인
그래서 혹시 인스턴스의 문젠가 싶어서 인스턴스는 빼고 숫자 1을 push해봤는데, 놀랍게도 같은 현상이 발생!! 아마 인스턴스나 클래스 정의 등에는 문제가 없는 것으로 방향이 정해졌고, 그럼 monsters 배열이나 push 메서드에 문제가 있겠거니 싶었다!!
그래서 혹시 나도 모르게 어떤 조작을 하고 있나 해서, monsters 배열에 Array.isArray를 통해 확인을 받아보았는데 눈물 나게도 배열이 맞다.... 대체 뭘까 지쳐가던 와중에 문득 든 생각이.... 혹시 나오자마자 죽나....? 싶어서 바로 확인해보았다!!! 그렇다면 값이 있는데 없는 그런 요상한 상황이, push를 하는데 계속 요소가 하나로 유지되는 상황이 이해가 되는 거시다...
세번째 콘솔 : 해결!!!!!
그래서 설마설마 하며 몬스터가 사망 처리되는 조건 구문 내에 콘솔을 찍어봤는데, 잡았다 요놈!!!!!!!
현재는 저 속성을 currentHp로 바꿔 놨는데, 저걸 그대로 hp로 해놨으니 당연히 조건이 작동을 안 하지... 저 사진대로는 무조건 else 구문으로 향하고 있었고, 몬스터는 지 체력이 만땅임에도 불구하고 매 프레임마다 썰려나가는 불쌍한 상황에 처해있었던 것... 그래서 당장 수정해주었고, 감격스러운 재회를 할 수 있었다!!
역시 언제나 오류는 기본적인 곳에서 발생한다... 오늘도 나를 괴롭힌 undefined지만 역시 끝까지 가면 내가 다 이긴다... 변수 이름을 수정할 땐 항상 안전하게 ctrl + f나 ctrl + d를 활용해서 확실히 서치 후에 수정하자!!! 모듈이 다를 수 있으니 ctrl + shift + f로 찾자!!!
'TIL&WIL' 카테고리의 다른 글
241226 TIL - 익명 함수 (0) | 2024.12.26 |
---|---|
241224 TIL - JSON.parse() (0) | 2024.12.24 |
241219 TIL - 개인과제04 (2) | 2024.12.20 |
241218 TIL - reduce(), concat(), 개인과제03 (3) | 2024.12.18 |
241217 TIL - 개인과제02, shift() (1) | 2024.12.17 |