본문 바로가기
반응형

Programming Language/Javascript4

[Javacript] 이벤트 루프와 태스크 큐 이벤트 루프자바스크립트는 싱글 스레드 방식을 지원한다. 한번에 하나의 태스크만을 처리할 수 있다. 그럼에도 마치 여러 태스크가 동시에 처리되는 것처럼 보이는 이유는 이벤트 루프가 동시성을 지원하기 때문이다. 이벤트 루프는 브라우저에 내장되어있는 기능 중 하나다.1. 콜 스택실행 컨텍스트가 추가되고 제거되는 스택 자료구조이다. 함수가 호출되면 함수 실행 컨텍스트가 순차적으로 콜 스택에 푸시되어 순차적으로 실행된다.  2. 힙힙은 객체가 저장되는 메모리 공간이다. 콜 스택 요소인 실행 컨텍스트는 힙에 저장된 객체를 참조한다.  콜 스택과 힙을 이용하여 자바스크립트 엔진은 태스크가 요청되면 콜 스택을 통해 요청된 작업을 순차적으로 실행할 뿐이다. 비동기 처리에서 소스코드의 평가와 실행을 제외한 모든 처리는 자.. 2024. 6. 15.
[Javascript] 클로저 * 클로저 이해를 위해선 '렉시컬 스코프'에 대한 이해가 선행되어야 한다.  클로저와 렉시컬 환경const x = 1;function outer() { const x = 10; const inner = function() { console.log(x) } return inner;}const innerFunc = outer();innerFunc(); outer() 함수를 호출하면 inner를 반환하고 생명주기를 마감, 즉 실행 컨텍스트가 실행 컨텍스트 스택에서 제거된다. 이에 따라 이 outer 함수 내의 지역변수 x도 생명주기가 마감된다. 그런데 innerFunc()를 실행하면 결과로 10이 나온다.이렇게 외부함수보다 중첩 함수가 더 오래 유지되는 경우 중첩함수는 이미 생명주기가 종료된 외부.. 2024. 6. 14.
[Javascript] 실행 컨텍스트와 렉시컬 환경 소스코드의 평가 및 실행모든 소스코드는 실행에 앞서 평가 과정을 거친다. 평가 과정에서는 실행 컨텍스트라는 것을 생성하고 변수, 함수의 선언문만 먼저 실행하여 생성된 변수나 함수 식별자를 실행 컨텍스트에 키로 등록한다. 값은 아직 정해지지 않아 undefined상태이다.이런 평가 과정이 끝나면 실행 단계가 시작된다. 즉 런타임 과정에서 변수나 함수의 값을 채워 넣는다. 이때 실행 컨텍스트에 존재하는 스코프를 참조하여 값을 정하게 된다. var x;x = 1위의 코드에서 평가 과정을 통해 1번 명령줄을 보고 x에 대한 키를 생성하고 실행과정에서 2번 명령줄을 보고 x에 값을 할당한다 실행 컨텍스트의 스택전체 소스코드의 실행은 다음 순서를 가지게 된다1. 전역 소스의 평가2. 전역 소스의 실행3. 전역 소스.. 2024. 6. 13.
[Javascript] 스코프의 정의 및 렉시컬 스코프 알아보기 스코프의 정의와 종류스코프 = 식별자가 유효한 범위.전역에서 선언된 변수는 전역 스코프를 갖는 전역변수, 지역에서 선언된 변수는 지역 스코프를 갖는 지역변수다.  스코프 체인함수 안의 또 다른 함수를 정의할 수 있는데 이를 중첩 함수라고 부른다. 함수가 중첩될 수 있으므로 지역 스코프 역시 중첩될 수 있다. 이는 스코프가 중첩에 의해 계층적 구조를 갖는 것을 의미한다. 이때 바깥 쪽 함수의 지역 스코프를 계층적으로 더 상위 스코프로 간주한다. 참고로 모든 지역 스코프의 최상위 스코프는 전역 스코프이다. 이렇게 모든 스코프가 하나의 계층을 만들어내는 것을 스코프 체인이라 한다 변수를 참조할때 JS엔진은 스코프 체인을 통해 변수를 참조하는 코드의 스코프에서 시작하여 상위 스코프 방향으로 이동하여 선언된 변수.. 2024. 3. 21.
반응형