프로그래머스 프론트엔드 데브 코스 프론트엔드 과정의 기록입니다.
클로저 let 활용
컴포넌트를 활용한 ToDoList 구현하기
명령형적인 방법으로 웹을 구현하는 방법이 아닌 좀 더 선언적인 방법으로 컴포넌트들을 만들어가며 웹을 구현하는 방법에 대하여 학습할 수 있었다.
컴포넌트 단위의 개발 방식을 통해 독립적인 상태를 유지하며 개발하는 방법의 장점에 대해 많이 배우게 되었다. 코드간의 의존성을 줄이며 독립성을 올리면서 유지보수에 굉장한 이점을 가져오는 것을 보며 매력에 빠지게 되었다.
예전에는 컴포넌트 단위는 이런게 있구나 정도로 생각하였는데, 직접 개발하며 다시 바라보니 무엇이 장점이고 이게 왜 장점이지 ? 에 대한 생각을 하며 좋은 공부가 되었다.
그리고 웹 스토리지에 대하여 외부로부터 인한 예외처리 방법에 대하여 처음으로 생각해보며 공부하게 되었다. 중요한 요소였는데 예전에 웹 스토리지에 대하여 학습할 때 에는 이 부분을 생각하지 못했었다. try...catch를 통한 상태 변경에 대한 개발을 생각하며 할 수 있어서 좋았다.
this의 명시적 바인딩 학습
어제는 this의 암묵적 바인딩 상황에 대하여 공부하며 다양한 함수 상태에서의 this에 대하여 알아보았다면 오늘은 명시적인 this의 바인딩 방법인 apply, call, bind 함수와 화살표 함수의 this가 동작하는 방법에 대하여 공부하며 포스팅을 작성하게 되었다.
특히 화살표 함수를 자주 써왔던 나지만 화살표 함수에서의 this가 렉시컬 스코프를 가지는 줄 몰랐었다. 실행 컨텍스트에서의 thisValue는 확실히 중요한 개념이므로 이를 통해 좀 더 유연한 코딩이 가능한 지식을 얻어서 기쁘다.
어제와 오늘을 통해 깊은 내용으로 this를 다루었는데 여러 타입의 함수들에 대한 this 사용의 이해도가 올라간 것 같다. 이를 통해 중첩적으로 이루어진 함수에서도 데이터 로직을 이해할 수 있게 되었다.
클로저 let 활용
기존에 실행 컨텍스트에서 이해하고 있었던 전역컨텍스트와 함수컨텍스트에서 for문 속에서의 let 구문이 동작하는 원리에 대하여 긴 시간을 공부하게 되었다. 클로저의 효과를 기대하기 위해 var 대신 let을 쓰면 해결이 된다 하였다고 배웠었다.
하지만 결과값이 왜 그렇게 나오는지 ? 에 대한 의문이 들었고, 여러자료를 찾으며 공부하였고, es6+의 let 문법을 바벨을 통해 변환한 결과를 보니 바로 이해가 가능했다. for문의 let이 새로운 함수컨텍스트를 생성하고 실행하는 것이었다.
주체적인 학습으로 es6+ 코드가 그 이전의 코드로 변환되는 과정을 새로 알게되었을 뿐인데 그 코드를 보고 기초 동작원리(실행컨텍스트, 스코프, 호이스팅, this.. 등)가 복합적으로 바로 머리속에 그려지자 기분이 좋았다. 그만큼 내가 공부해온 것에 대한 정리가 되어있다고 생각이 들었기 때문이다. 스스로 해낸거 같은 기분이 들어서 기뻤다.
함수형 프로그래밍을 통한 로직 구현에 관하여 각자 팀원들이 작성한 코드에 대하여 코드 리뷰를 진행하였다. 나 역시 좋은 피드백을 통해 많은 배움을 얻었고 무엇보다 팀원들의 코드를 보며 이해하려는 노력을 통해 코드를 바라보는 시야가 넓어짐을 느끼게 되었다.
내가 어려움을 느꼈던 구현 코드에 대해 팀원들이 구현한 내용들을 보며 여러 접근법에 대해 배울 수 있었고 나 역시 적극적으로 코드 리뷰에 참여하여 나에게 인상적인 코드에 대해 어떠한 생각을 가지고 코드를 작성한건지 팀원에게 많이 물어보았다.
그리고 셀프 리뷰의 중요성을 인지하게 되었다. 상대방이 코드 리뷰를 해줄 수 있는 상황에 대해서는 좀 더 여유를 가지고 내 코드를 최종 점검하는 습관을 가져야 겠다고 생각하게 되었다.
JavaScript에 대한 이해도가 많이 올라가고 있는 것 같다. 공부를 할 때 마다 점점 새로운 차원의 깊이로 내용을 파고들게 되는 것 같아 좋은 징조를 느낀다.
시간을 더 효율적으로 나누어 여러 방면의 필요한 지식들에 대하여 소홀히 하지 않도록 계획을 짜도록 노력해야겠다. 하루하루 나의 양심에 최선을 다해서 노력하였다면 나아가는 진도에 대하여 조급해하지 않도록 해야겠다.
경험치가 쌓일수록 더 효율적인 학습 계획을 세울 수 있을거라고 믿어 의심치 않는다. 정말 의아한 느낌이 든다면 멘토님에게 질문을 남겨야겠다.
Vanilla JS의 Module과 Callback 심화 학습하기
prototype 포스팅 정리 마무리하기
멘토링 진행(with. lucas)