hooninedev.com
🧑🏻‍🏫
멘토링자바스크립트

비전공 프론트엔드 2년차 개발자 멘티 일지: 3주차 - 기초를 위한 과제 폭탄

2024.05.21

한 주 소감 및 복습 내용

1.jpeg

이번 주부터 과제가 엄청나게 많다. 그리고 이전에 했던 과제들에 대한 복습들도 이루어져야 되기 때문에, 개념적인 공부는 위 과제들을 진행하면서 해당 게시글을 여기에 리포스팅할 예정이다.

이번주에 멘토링을 진행하면서 다시 공부해보면 좋을 것 같은 부분은 아래와 같다. 하나씩 차근차근 천천히 준비하면서 폭 깊은 개발자가 되어보자!

자바스크립트의 함수에서 동적과 정적에 대해

자바스크립트에서 동적(Dynamic)정적(Static) 이라는 용어를 주로 Scope와 bind를 다룰 때 사용한다.

우선 자바스크립트는 정적 스코프를 사용한다. 함수의 호출이 아닌 정의될 때의 스코프 체인 기반으로 변수의 스코프를 정의한다. 동적으로 사용되면, 호출 때마다 스코프의 범주가 예상하지 못하게 동작이 되어 개발자에게 큰 오류가 될 것이다.

정적 스코프에서 함수가 정의될 때의 스코프를 기억하여 함수가 호출될 때도 그 스코프에 접근할 수 있게 해주는 메커니즘을 클로저를 사용하고 있다.

자바스크립트에서는 항상 정적 스코프를 다루고 있다는 것을 명심해야 한다.


const와 호이스팅에 대해

console.log(a);
const a = '1000';

const와 호이스팅에 대한 내용은 위 코드를 예시로 확인해보겠다.

우선 위 코드는 Reference Error가 발생한다. const는 선언과 동시에 초기화가 되어야 하는데, 블록 스코프를 가지는 const는 호이스팅이 되어 선언은 되었지만, 초기화가 되지 않아 일시적 사각지대(TDZ)에 들어가기 때문이다.

const, let, var에 대한 내용은 여기에 기록해두었으니, 참고 바랍니다.


좋은 함수란?

우선 구글링을 하다가 아주 좋은 글을 찾아서 공유 드립니다! 👇 향로님의 좋은 함수란?

내가 생각한 좋은 함수란 순수함수여야 한다고 생각했다. 여기서 생각하는 순수함수는 같은 입력일 경우 항상 동일한 출력을 반환하고 부작용이 없는, 명확하게 하나의 기능을 하는 함수를 의미했다.

사실 내가 생각한 것도 좋은 함수를 작성하는 기준이 된다. 하지만 리팩터링과 테스트의 영역에서는 생각해보지 못하였다. 향로님의 글을 읽다 보니 책임을 명확하게 하고, 테스트를 쉽게 하며, 순수 함수로 모든 것을 작성하기 어려우니 그에 반하는 부작용 함수를 만들어 격리시키는 것까지 생각을 하는 것이 좋은 함수를 작성할 자세라는 것을 알게되었다.

내가 저 질문에 대답을 못한 이유도 아직 테스트에 대한 생각이 부족해서라고 생각한다. 위 개념을 생각해보며 테스트를 작성해보는 습관을 지녀야겠다!


5월 셋째 주 회고

이번 주 좋은 것과 나쁜 것

  • 본격적으로 공부하기 위해서 주말 동안 고향에 가서 가족과 시간을 보냈습니다.
  • 그동안 해야겠다고 생각하고 있는 복잡한 것들에 대해 정리해서 구체적인 계획을 세웠습니다.
  • 공부하면서 부족하다고 느낀 부분에 대해 다시 복습을 진행했습니다.
  • 주말에 가족과 등산도 가고, 음식도 먹고, 이야기를 나누는 시간을 많이 보내 주말 동안 작업 및 공부를 진행하지 못했습니다만 좋은 시간이고 평일에 시간을 더 많이 할애해서 나쁘지 않다고 생각합니다

이번 주 진행했던 학습/개발 내용은??

  • 클래스와 프로토타입을 비교해보면서 공부했습니다.
  • 멘토링에서 주어진 숫자 업앤다운을 코드를 작성했습니다. 어렵다고 생각하지는 않았지만, 평소에 생각하지 못한 컨벤션과 문법을 고려하며 작성해보았습니다
  • Mock 데이터를 이용해 Test 코드 작성하는 것이 회사의 업무로 주어져서 공부하면서 개발 진행 중입니다.
  • 콜스택, 실행 컨텍스트, 힙메모리, 스코프 등의 개념을 활용해 예시 코드를 작성해 실행 컨텍스트 기반 동작 원리에 관해서 공부했습니다.

가장 고민했던 부분은 무엇이었나요?

  • 자바스크립트의 엔진이 어떠한 동작 원리로 작동되는지 고민을 해보았습니다.
  • 내가 어떤 것을 집중해서 공부해야 할지 정리하고, 어떤 것에 부족한지 생각해보았습니다

아쉬운 부분을 개선하는 데 필요한 것은 무엇인가요?

  • 생각이 집중되고 필요한 부분에 대해 명확해진 만큼 집중할 수 있는 시간을 많이 할애할 예정입니다.

다음 주는 어떻게 보낼 예정인가요?

  • 사내에서 DevOps 관련한 업무를 약간 해보았습니다(frontend 배포환경 구축). 이와 관련해서 DevOps 관련해서 AWSKRUG에서 주관하는 밋업이 있어서 수요일에 다녀올 것입니다
  • 이번 주 금요일, 토요일에서 동아리에서 해커톤을 진행하는데, 담당자로 활동할 예정입니다. 행사 시작과 마무리 외에는 관여할 부분이 없어서, 부족한 부분 공부와 프론트엔드 직무 사람들과 이야기를 진행할 것입니다.
  • 5/27에 넥스트 스텝에서 주관하는 이펙티브 디버깅 행사에 다녀올 것입니다.
  • 이외 시간에는 멘토링 내용에 대해 복습 및 선행학습 진행하고, 회사 업무할 것입니다

출처 및 도움되는 링크들

© Powered by hoonine