JavaScript는 어렵다...
프로그래머스 교육과정에 참여하기 전 QML을 프로그래밍할 때 자바스크립트를 사용했었는데, 그 때 당시에는 매우 단순하게 입출력을 만들어서 UI에 전달하는 function만을 사용했었다. 그 후에 관심이 생겨서 클론 코딩 몇번을 따라하고 자바스크립트를 이해 했다고 생각했다... 😂
하지만 교육과정에 참여해서 자바스크립트를 공부하면서 내가 알고 있는 지식이 정말 아무것도 아니라는 것을 깨닫고 매일 도전하고 있다. 힘들긴 하지만 이렇게 집중해서 배울 수 있는 기회가 너무 감사하다 생각하고 열심히 해야겠다는 의지가 생긴다 😄
Scope
클로저, 호이스팅, this를 공부하면서 Scope에 대한 혼란으로 인해 어려움이 많았다. 알고 보니 당연히 블록 스코프만 존재하는줄 알았는데, 전역 스코프, 지역 스코프, 함수 레벨 스코프, 블록 레벨 스코프 거기에 렉시컬 스코프 까지.. 스코프 지옥을 볼 수 있었다😅
고차 함수
고차 함수를 사용하면 쉽게 프로그래밍을 할 수 있다고만 생각했다. 하지만 고차 함수를 사용해서 쉽게 코드를 작성하기 위해서는 고차 함수의 동작 원리를 정확히 알고 있어야 하고 고차 함수를 여러 개 사용할 경우 어떤 순서로 함수가 진행하는지도 잘 알고 있어야 한다. 멀리서 봤을 때는 마냥 사용하기 쉬운 도구인줄 알았는데, 직접 사용해보려 하니 어렵다...
Promise
자바스크립트에 대해 얕은 지식을 갖고 있을 때, Async Await의 등장으로 인해 Promise 보다 Async Await을 사용하는 방법이 더 편하다고만 알고 있었다. 그래서 Promise에 대해서는 그냥 몰라도 되는 개념이다 생각했었는데, 자바스크립트에서 비동기 처리를 어떻게 해야하고 전형적인 콜백 패턴이 가져오는 콜백 헬의 위험성과 에러 처리의 어려움을 배우고 Promise를 사용해서 콜백 패턴을 어떻게 대체할 수 있는지를 배우며 Promise의 중요성을 느꼈다. 또한 Async Await 도 Promise를 사용하기 때문에 제대로 사용하기 위해서는 Promise에 대한 이해가 반드시 필요하다고 느꼈다.