본문 바로가기

카테고리 없음

2021년 12월 12일 개발일지

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을 사용하면 됩니다 .