오늘 공부한 내용 📋

API의 정의에 대해서 다시 한번 상기하고, DOM, BOM, CSSOM, Render Tree와 같이 브라우저가 웹페이지를 관리하고 파싱하는 구조를 공부했다. 그리고 textContext, innerText, innerHTML의 차이에 대해서 공부했지만 잘 모르겠어서 더 공부해야한다. 지금 아는건 innerHTML은 아얘 모든 노드를 바꿔서 덮어쓰는것이고, innerText는 순수 textNode만 바꾸며, textContext는 그 중간인걸로 안다. 그리고 프로세스와 쓰레드에 대해서 다시 한번 상기했고, 자바스크립트는 싱글 쓰레드로써 비동기적인 프로그래밍이 원래는 안되지만 브라우저 런타임 환경을 이용해서 싱글 쓰레드의 한계점을 극복하여 비동기적인 프로그래밍도 가능하다는것을 알게되었다. 그리고 객체타입은 변수에 그냥 집어넣으면 shallow copy가 되지만 Object.assign()을 사용하면 deep copy가 가능하다는것을 알았고, Object.freeze()를 통해서 속성이 변하지 않도록 잠글 수 있다는 것도 알았다. 그리고 iterator에 대해서 배웠는데, 이건 C++할때도 내가 이해를 못했었는데 지금 자바스크립트에서 다시 봐도 어렵더라. 내부 구조는 잘 이해가 안되지만, 하나 알게된것은 어떤 컨테이너가 Symbol.iterator라는 객체를 가지고 있어야 for of 와 같은 구문을 사용할 수 있다는 것을 알았다. 그리고 getElementsByTagName의 반환값은 HTML Collection 타입이고, querySelectorAll()의 반환값은 Node List 타입인데, forEach나 map같은 함수는 HTML Collection 내장함수가 아니기때문에 사용할 수 없다는 것도 알았다. 그리고 이벤트 리스너의 콜백함수에 매개변수를 명시하지 않더라도 내부에서 이벤트객체를 사용할 수 있고, function 표현식에서 인자는 func(콜백함수, “인자”, “인자2”) 이런식으로 보낸다는것을 알았다.

어려웠던 내용 🤢

아직 DOM, BOMM, CSSOM, Render Tree 등 브라우저 구조에 관련된 것은 한번만 봐서는 잘 모르겠다. 양이 많기도 하고 매우 복잡하게 얽혀있는것 같아서 짧게 공부해서 알 수 있는 영역은 아닌것 같다. 그리고 innerText냐 innerHTML이냐 textContent냐와 같이 비슷하면서도 서로 다른 메서드나 프로퍼티가 너무 많아서 헷갈린다. 그리고 운영체제공부를 열심히 하지 않아서인지 쓰레드 개념도 잘 아직 와닿지 않고, 브라우저 런타임 환경도 그림으로 대충 이해한거라 확실히 이해가 가지는 않는다. 그리고 Iterator는 정말 이해를 못했다. 그냥 Collection Container의 내부에 Symbol.Iterator가 있어야만 for of같은 반복문을 사용할 수 있다는 것은 알게되었다.

궁금한 내용 🧐

HTML Collection과.. Node List의 차이..가 궁금하고, textContent, innerText, innerHTML의 차이가 궁금하다. 서로 어떻게 다르고 실무에선 보통 어떤식으로 사용하는지 궁금하다. 그리고 브라우저에 관련해서 DOM이나 BOM 같은 구조에 대해서 더 자세히 공부하고싶고, 더 나아가 백엔드 부분에서는 NodeJS에서의 런타임 환경은 어떤지 궁금하다. 자바스크립트는 싱글쓰레드니까 노드에서는 어떤 식으로 API를 사용하여 비동기같은 기능을 구현할지 궁금하다.

느낀 점 🤔

오늘 실시간 수업은 처음 C/C++을 배울때처럼 자바스크립트 언어나 브라우저 구조에 대해서 좀 자세하게 공부했기 때문에 대학교 시절로 돌아간것같은 느낌을 받았다. 내가 C와 C++을 배우면서 어느정도 비슷한 점이 있었기에 망정이지, 만약 내가 비전공자였고 이 트랙을 통해서 이번 수업을 처음 들었다면 멘붕이 왔을거다. 😓

그래도 이 짧은 수업에서 저 많고 심오한 개념들을 단번에 이해하려고 한다는것은 너무나 큰 욕심인것 같다. 수업의 목적은 이러한 개념들이 있고, 대충 큰 그림을 이해해보고, 내가 어떤것을 모르고, 내가 앞으로 어떤것을 공부해야할지 알게된다면 그걸로 충분히 잘 하고 있다고 생각한다. 물론 여기서 이 수업만 듣고 복습이나 내가 모르는 부분을 더 공부하지 않는다면 내가 오늘 공부한 것들도 휘발되어 기억에서 사라질테고, 그럼 지금까지 한것은 모래성처럼 무너져 의미가 없어질지도 모른다. 그렇기에 이번 주 주말은 복습으로 정말 바쁜 주말이 될 것 같다. 😫