본문 바로가기
1️⃣ 개발 지식 A+/책으로 스터디

[1-4장] 모던 자바스크립트 Deep Dive

by ddubbu 2023. 10. 30.

FE 로 일한지 3년차인데, BE 공부에 대해 갈증이 있었다. 회사에서는 기회를 주신다고 했지만, 한번 발을 들이지 않으니 엄두가 안났다. 그러다가 인프런에서 Node.js 스터디원을 구하기도 했고, 핫한 스택보다는 주언어로 빠르게 공부하는게 좋다고 판단해서 바로 가입했다. 실은, 회사에서 Java Spring Boot 스터디를 시작하기도 해서, 갈증 해소를 넘어 개발자로서 다음 스텝으로 뛰어넘을 기회가 되지 않을까 기대하고 있다.

 

우선 js 기본 개념을 되짚고, Node.js 공부로 넘어가기로 했다. 그 첫번째 시작이다.


01장. 프로그래밍

 

내가 좋아하는게 바로, 이거지.

이슈를 작은 단위로 분해하고 패턴화해서 추출하며, 평가 가능하도록 정의해야한다. 저자는 컴퓨팅 사고를 이와 같이 정의했다. PRD(Product Requirements Document)가 나오면, 개발자는 각 기능별로 어떤 작업사항이 필요할지 생각한다. 기존 모듈을 사용해도 될까? 새로 개발해야하면 일정 산정은? 재사용 가능성은? 이렇게 한 이슈로부터 하위 이슈들이 파생된다. 그리고 하나씩 완료한다. '이슈를 쳐낸다' 라는 표현, 마치 스터디 플래너에서 계획 한줄 한줄 삭선을 그어 나갈때의 액션을 텍스트로 잘 표현했다고 생각한다.

 

 

02장. 자바스크립트란?

 

표준화

1995년 자바스크립트가 등장했고, 파생 언어가 나오며 모든 브라우저에서 정상 동작하는 웹페이지 개발 필요성이 생겼다. 1997년 비영리 표준화 기구인 ECMA 인터내셔널은 ECMAScript 1 을 완성했고, 오늘날 ECMAScript 2020 까지 등장하며 안정화되고 있다.

이를 보며, 회사 프로덕트의 성숙도에 대해 생각해보게 되었다. 어제의 코드가 오늘의 레거시가 되는데, 한편으로는 왜 처음부터 Convention 을 정하지 않을까? 왜 레거시를 쌓아두는거지? 라는 생각을 하곤 했다. 회사에서는 한정된 시간 속에서 이슈의 우선순위를 결정하고 작업을 해야한다. 때로는 중복 코드를 허용하기도하고 백로그를 남겨둔 채로 new feature 뽑기에 급급하기도 한다. 하지만, 그 레거시가 쌓여 더 이상 feature 를 뽑기 어려운 상황에 다다랐을 때 합의의 장을 만들어 리팩토링 하는 것을 보고, 비슷하다고 생각했다. 필요해지면 다 하는구나. 그 전에는 필요하지 않기 때문에 기다리는 것이다. 다만, 기회가 왔을 때 어느 점이 불편하고 애를 먹었는지 잘 논의할 수 있도록 기록하는게 중요한 것 같다. 

 

 

03장. 자바스크립트 개발 환경과 실행 방법

 

웹 브라우저

콘솔창은 참 고맙다. 언제 어디서든지 JS 를 실행할 수 있기 때문이다. 필자는 가끔 간단한 메소드 확인을 위해 콘솔창을 키곤 했다. 

 

Node.js

브라우저 이외의 환경에서 동작시킬 수 있는 실행 환경. 

REPL (Read Eval Print Loop) $node 실행으로 프롬프트가 >로 변경되면 코드를 실행해볼 수 있다.

 

 

04장. 변수

 

- 변수 선언 시 undefined 로 자동 초기화

- 값을 저장하고 참조하는 매커니즘, 값의 위치를 가리키는 상징적인 이름

여기서 참조 에러 라고 하는 것처럼, 참조할 변수가 없다고 하는게 이제야 눈길이 간다.

메모리 값이 아닌 인간 친화적인 이름으로 짓도록 했으니, 나만 알아보는게 아니라 동료도 알아볼 수 있는 변수로 작성하자 :)

 

- 변수 선언과 할당은 각기 다른 주소를 확보한다.

 

todo: Q. 타입스크립트를 집합개념으로 볼때, 공집합이 뭐였더라..?

todo: 가비지 콜렉터란? 어떤 식별자도 참조하지 않는 메모리 공간을 정리함. js 는 managed language 다. 자동으로 정리되기까지 기다려야하기 때문에 성능 이슈를 감안하게 된다.