HTML 클래스 속성의 작명법
BEM (Block Element Modifier)
요소__일부분 Underscore(Lodash) 기호로 요소의 일부분을 표시
요소--상태 Hyphen(Dash) 기호로 요소의 상태를 표시
자바스크립트 공부
자바스크립트는 준비단계와 실행단계로 나뉘어져있습니다 . => 인터프리터 언어라서 ,
인터프리터 언어란 ? 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경
컴파일 언어란 ? 사람이 만든 코드를 기계코드로 미리 바꿔놓음 . 기계에게 주기만 하면 회로를 움직일수 있는 상태로 만들어놓음 .
메모리에 대해서 다시 한번 공부했습니다 . 더나은 코드를 짜려면 메모리와 자바스크립트를 깊게 이해하는것이 좋을것 같습니다 .
The Javascript Engine
크롬을기준으로 Javascript Engine 은 V8 engine 을 사용합니다 .

콜스택은 코드가 실행되는곳이며 , 메모리 힙은 메모리 할당이 일어나는 곳입니다 .
The Runtime
브라우저에는 거의 모든 자바스크립트 유저들이 사용하는 APIs 가 있고 (e.g. setTImeout) , 그 APIs 들은 자바스크립트 엔진에서 제공되지 않습니다 .

이 API들은 브라우저에서 제공되고 ,
자바스크립트 코드로 접근할수 있는것입니다. 많은사람들이 DOM이 자바스크립트 인줄 알지만 사실 브라우저에서 제공되는 API이며
이 명령을 통해 HTML에 접근하여 데이터를 뿌려주거나 수정 ,삭제를 동적으로 할수 있게 해줍니다 .
이외에도 webAPI에는 아주중요한 api들이 많이 있습니다 . ajax, settimeout 등등이 있습니다 .
The Call Stack
자바스크립트는 싱글스레드 언어이고 , 이것은 콜스텍이 하나밖에 없음을 의미합니다 .
콜스텍은 스텍 자료구조를 가지고있습니다 .
가장 맨 밑에는 global context(전역 컨텍스트)가 자리잡고 있고 , 그위로 execution context(실행 컨텍스트) 가 쌓이는 방식이며 ,
해결된 실행 컨텐스트는 위에서 pop되어 사라집니다 .
그것이 콜스텍이 하는 역할입니다 .
싱글스레드 환경에서 코드를 실행하는일은 멀티스레드에서 실행하는 것보다 훨씬 쉬울 수 있습니다 .
멀티스레드에서는 여러가지 에러가 나올수 있는데 , 그중 하나가 데드 록입니다 .
하지만 스레드 하나만 있는 자바스크립트는 느릴수있지않을까요 ?
어떤 함수를 실행하는데 만약 너무 오랜 시간이 걸린다면 어쩌죠 ?
Concurrency & Event Loop
문제는 콜스텍에 실행될 함수가 실행되는데 너무 오래걸일 일이면 , 브라우저는 아무일도 할수 없습니다 . 막혀버리는것이죠
다른 코드를 실행할수 없으며 렌더링도 하지못하게됩니다 . 반응형웹을 짰다면 구동이 잠시동안 되지않을것입니다.
대부분 브라우저들은 클라이언트에게 에러가 발생했다고 경고창을 띄울것이고 , 브라우저를 종료할것이냐고 물을 것입니다 .

그렇다면 어떻게 우리는 무거운 함수를 브라우저의 오류없이 실행시킬수 있을까요?
그럴때는 비동기 콜백(asynchronous callbacks) 을 사용하면 됩니다 .