1. 왜? 를 묻는 것이, 복잡한 현상을 이해하기 위한 첫걸음이라는 사실을 잊고 있었다. 그리고 그걸 잊었다는 사실을 오늘 깨달았다. 메이커스 작업을 하면서 코드리뷰를 달 일이 생겼는데, 그때 그 친구가 남긴 코드와, 그에 대한 답변을 달아주기 위해 코드를 정확하게 이해했어야 했다. 그런데 setTimeout 이 있는 쓰로틀 함수여서, 그냥 한 눈에 이해되기는 쉽지 않았다. 그래서 계속해서 왜? 를 물었다.
왜 setTimeout 을 썼지?
>> callback 함수를 실행하는 동안 사용자의 중복 submit 을 멈추려고
>> 그럼 타이머는, 사용자가 클릭하지 못하는 시간을 설정하기 위해 만든 것이구나.
>> 그럼 타이머가 끝나면? 다시 처음과 같은 상태로 돌아가는구나. 그리고 이 친구는 이때 null 이 들어가니까, 타이머가 메모리에서도 없어진다고 생각했구나.
>> 그런데 ref 는 왜 썼을까? 타이머의 ID 를 참고해서 타이머에 접근하려고 썼구나.
>> 그럼 ref 가 참조하고 있는 건 타이머의 ID 인데, 참조하고 있는 타이머의 ID 를 null 로 초기화한다고 해서 타이머가 메모리에서도 삭제될까? 그럼 clearTimeout 은 왜 있을까?
>> 결론 : ref 로 참조하는 타이머의 ID 를 null 로 초기화할 순 있지만, 메모리에서 완벽히 삭제하기 위해선 clearTimeout 을 써야 하는 구나.
나아가 만약 clearTimeout 을 사용하지 않는다면, 자바스크립트 엔진의 가비지 콜렉터가 타이머를 없앨 때까지 쓸데없는 메모리를 잡아먹을 수 있겠다는 생각도 들었다.
-> 모던 자바스크립트 딥다이브와 같이 엄청 두껍던... 자바스크립트 동작 원리에 대한 책을 꾸역꾸역 읽던 것이 이렇게 도움이 될 줄은 몰랐다. 이래서 이론이 중요하다는 것이구나.
.
.
.
사실 고등학생 때 수능 준비를 하면서도 내가 써먹었던 방법이, 5 Why 였다. 즉 어떤 문제를 틀렸다면, 그냥 넘어가지 않고, 내가 틀린 이유에 대해서 최소한 5번의 왜? 를 묻는 방법. 이를 통해 내가 가지고 있던 근본적인 실수들을 바로잡을 수 있었고, 수능도 잘 봤는데 이 중요한 교훈을 여태껏 잊고 살았던 것이다.
'생각' 카테고리의 다른 글
내 시선이 아니라, 타인의 시선에서 바라보고 생각하는 연습 (0) | 2024.05.31 |
---|---|
사람에게 도움이 되는 사람이 되고 싶다. (1) | 2024.04.13 |
2024.02.18 TIL 겸 반성문ㅎㅎ (3) | 2024.02.19 |
AWS Girls Career Meet-Up 2부 (0) | 2023.11.15 |
AWS Girls Career Meet-Up 1부 (0) | 2023.11.15 |
댓글