this가 가리키는 것
·
Javascript
자바스크립트에서의 this는 객체를 가리키는 키워드며, 어떻게(누가) 호출하는지에 따라 결정됩니다. 자세히 말하면, this는 호출한 주체입니다. *아래 예제들은 ‘use strict’를 사용하지 않을 경우를 다룹니다. 호출 주체에 따른 this 호출주체: 전역스코프 console.log(this); // {...window} function printThis() { console.log(this); } // printThis를 호출한 것은 Window이므로 Window 객체를 출력합니다. printThis(); // {...window} 호출주체: Object function printThis() { console.log(this); } const object = { printThis1: printTh..
스코프와 클로저
·
Javascript
스코프(Scope)란 (변수, 함수, 클래스의 이름과 같은)식별자에 접근할 수 있는 범위 입니다. 식별자가 선언된 위치에 따라 어디에 참조될 수 있는지(범위) 결정됩니다. 스코프의 구분 코드의 영역이 전역과 지역으로 나뉘듯 변수와 스코프도 전역과 지역으로 나뉩니다. 전역 스코프(Global Scope) 전역에 선언되어 어디에서든지 해당 식별자를 참조할 수 있습니다. 지역 스코프(Local Scope or Function-level Scope) 해당 지역에서만 접근할 수 있어, 지역 내에서만 해당 식별자를 참조할 수 있습니다. // 전역 scope var x = "global scope 전역변수 x"; // 지역 scope function outer() { // 지역 scope var y = "outer ..
실행 컨텍스트: 호이스팅과 스코프 체이닝
·
Javascript
자바스크립트 코드의 실행 실행과정 코드 실행이 시작되면 콜스택에 전역 실행컨텍스트가 들어갑니다. 전역에서 특정 함수 ‘A’를 호출할 경우 ‘A’의 실행컨텍스트가 생성되어 콜스택에 들어갑니다. 콜스택에서는 가장 최근에 추가된 실행컨텍스트만 활성화됩니다. 활성화된 실행 컨텍스트 ‘A’는 실행이 종료되면 사라집니다. 전역컨텍스트는 코드가 마지막 라인까지 모두 실행을 마치면 사라집니다. 실행컨텍스트 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다. 생성 과정 생성 단계: 선언문만 실행해서 환경 레코드에 기록하는 단계입니다. 실행 단계: 선언문 외 나머지 코드를 순차적 실행하거나 환경 레코드 참조, 업데이트하는 단계입니다. 구성 VariableEnvironment 현재 컨텍스트 내 식별자 정보, 외부환경 ..
자바스크립트 엔진(Call Stack, Event Loop, …)
·
Javascript
자바스크립트 엔진의 구조 Memory Heap 데이터(사용자가 작성한 코드)를 임시 저장하는 곳입니다. *Heap: 구조화 되지 않은 넓은 메모리 영역 Call Stack 한 줄 단위로 실행할 코드가 스택 형태로 쌓이는 영역입니다. 비동기 함수는 바로 pop 되어 Web APIs로 보내집니다. 런타임 자바스크립트가 구동되는 환경(웹브라우저 또는 NodeJS)을 말합니다. JS 엔진과 함께 Web APIs(NodeJs에서는 Background), Event Loop와 Callback Queue가 동작합니다. Web APIs DOM, Ajax 요청, Timeout 등 웹브라우저에서 제공하는 기능들입니다. 해당 요청들은 JS엔진이 아닌 다른 스레드에서 처리됩니다. 비동기 처리를 담당합니다. 처리가 완료되면 테..