본문 바로가기

자바스크립트111

[ 모던 자바스크립트 스터디 ] 비동기 프로그래밍 동기 처리와 비동기 처리 함수를 호출하면 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이때 생성된 함수 실행 컨텍스트는 실행 컨텍스트 스택에 푸시되고 함수 코드가 실행된다. 자바스크립트 엔진은 단 하나의 실행 컨택스트 스택을 갖는다. 이는 동시에 2개 이상의 함수를 실행시킬 수 없다는 것을 의미한다. 실행 컨텍스트 스택의 최상위 요소인 "실행중인 실행 컨텍스트"를 제외한 모든 실행 컨텍스트는 모두 실행 대기중인 태스크 들이다. 대기중인 태스크들은 현재 실행중인 함수가 종료되면 비로소 실행된다. 이처럼 자바스크립트 엔진은 한번에 하나의 태스크만 실행할 수 있는 싱글 스레드 방식으로 동작한다. 싱글스레드 방식은 한 번에 하나의 태슼느만 실행할 수 있기 때문에 처리에 시간이 걸리는 태스크를 실행하면 .. 2022. 11. 5.
[ 모던 자바스크립트 스터디 ] 타이머 호출 스케줄링 함수를 명시적으로 호출하면 함수가 즉시 실행된다. 만약 함수 호출을 예약하고 싶다면 타이머 함수를 이용하면 된다. 이를 호출 스케줄링이라 한다. 자바스크립트는 setTimeout 과 setInterval, clearTimeout, clearInterval 을 제공한다. 타이머 함수는 ECMAScript 사양에 정의된 것은 아니지만, 브라우저 환경과 Node.js 환경에서 모두 전역 객체의 메서드로서 타이머 함수를 제공한다. setTimeout 함수가 생성한 타이머는 단 한 번 동작하고, setInterval 함수가 생성한 타이머는 반복동작한다. 자바스크립트 엔진은 단 하나의 실행 컨텍스트 스택을 갖기 때문에 두 가지 이상의 태스크를 동시에 실행할 수 없다. 즉, 자바스크립트 엔진은 싱글 스.. 2022. 11. 5.
[ 모던 자바스크립트 스터디 ] DOM 브라우저의 렌더링 엔진은 HTML 문서를 파싱하여 브라우저가 이해할 수 있는 자료구조인 DOM을 생성한다. DOM은 HTML 문서의 계층적 구조와 정보를 표현하며 이를 제어할 수 있는 API, 즉 프로퍼티와 메서드를 제공하는 트리 자료구조다. 노드 HTML 요소와 노드 객체 HTML 요소는 HTML 문서를 구성하는 개별적인 요소를 의미한다. HTML 요소는 렌더링 엔진에 의해 파싱되어 DOM을 구성하는 요소 노드 객체로 변환된다. 이때 HTML 요소의 어트리뷰트는 어트리뷰트 노드로, HTML 요소의 텍스트 컨텐츠는 텍스트 노드로 변한다. HTMl 요소간의 부자 관계를 반영해 HTML 요소를 객체화한 모든 노드 객체들을 트리 자료 구조로 구성한다. 트리자료구조 트리 자료구조는 노드들의 계층 구조로 이루어진.. 2022. 11. 3.
[ 모던 자바스크립트 스터디 ] 브라우저의 렌더링 과정 브라우저가 HTML, CSS, 자바스크립트로 작성된 텍스트 문서를 파싱하는 과정을 살펴보자. 파싱 문서의 문자열을 토큰으로 분해하고, 토큰에 문법적 의미와 구조를 반영해 트리 구조의 파스트리를 생성하는 과정이다. 파싱이 완료된 이후에는 그 파스 트리를 기반으로 중간언어인 바이트코드를 생성하고 실행한다. 렌더링 HTML, CSS, 자바스크립트로 작성된 문서를 파싱해 브라우저에 시각적으로 출력하는 것이다. 브라우저는 다음과 같은 과정을 거쳐 렌더링을 수행한다. 브라우저는 HTML, CSS, 자바스크립트, 이미지 등 렌더링에 필요한 리소스를 요청하고 서버로부터 응답받음 브라우저에 탑재된 렌더링 엔진은 서버로부터 응답받은 HTML과 CSS 를 파싱해 DOM과 CSSOM 을 생성하고 이를 결합해 렌더트리 생성함 .. 2022. 11. 1.