본문 바로가기

JavaScript/AboutJS

(13)
[JavaScript] Closure (클로져) 클로저(Closure)는 1. 내부 함수와2. 그 함수가 선언될 때의 렉시컬 환경(Lexical Environment)의 조합 이다. 1. 내부 함수: 다른 함수 내부에 정의된 함수2. 렉시컬 환경: 함수가 선언될 때 생성되는 환경으로, 해당 함수의 스코프에 있는 모든 변수와 함수를 포함.  클로저의 동작: 내부 함수가 외부 함수의 변수에 접근할 수 있고, 외부 함수가 반환된 후에도 이 접근이 유지된다.  어떤 특별한 개념이 아닌 함수의 생성과 함께 자연스럽게 발생하는 게 클로저라는 현상이지만, 우리가 특별히 언급할 때는 주로 상위 스코프에서 선언한 변수를( 렉시컬 환경 ), 내부 함수에서 참조할 경우에일어나는 특정한 사용 사례나 동작을 가리킨다.var outer = function () { var a..
[JavaScript] 이벤트 루프란? 이벤트 루프는 자바스크립트의 비동기 실행 모델을 구현하는 핵심 메커니즘입니다. 자바스크립트가 단일 스레드 언어임에도 불구하고 비동기적으로 작업을 처리할 수 있게 해주는 중요한 요소입니다. 1. 이벤트 루프의 주요 구성 요소 1. 콜 스택 (Call Stack):    - 자바스크립트 코드가 실행되는 곳입니다.    - 함수 호출 시 스택에 쌓이고, 실행 완료 시 스택에서 제거됩니다. 2. 힙 (Heap):    - 객체가 할당되는 메모리 영역입니다.   - 변수와 객체의 메모리 할당이 이루어지는 곳입니다.3. 태스크 큐 (Task Queue) 혹은 콜백 큐:    - 비동기 콜백 함수들이 대기하는 큐입니다.    - setTimeout, setInterval, I/O 작업 등의 콜백이 여기에 추가됩니다...
[JavaScript] This 를 판단하는 기준 이글은 실행 컨텍스트에서 넘어왔습니다.https://daunje0.tistory.com/61 [JavaScript] 실행 컨텍스트 ( Execution Context )Execution Context (실행 컨텍스트) 란? 자바스크립트의 실행 환경을 추상화한 개념으로, 코드(함수)가 실행되기 위해 필요한 환경 정보를 담고 있는 객체이다.  1. 구성 요소 Lexical Environment원래는daunje0.tistory.com   앞서 살펴 본 것처럼 this binding 은 실행 컨텍스트가 실행될 때, 시작 되게 된다   실행 컨텍스트가 생성되는 때는 이 컨텍스트에 해당하는 함수가 호출되는 순간이다.이 말은 this 도 함수가 호출될 때에 무엇을 지칭할 지 결정된다는 뜻이다.java 처럼 정적으로 ..
[JavaScript] 실행 컨텍스트 ( Execution Context ) Execution Context (실행 컨텍스트) 란? 자바스크립트의 실행 환경을 추상화한 개념으로, 코드(함수)가 실행되기 위해 필요한 환경 정보를 담고 있는 객체이다.  1. 구성 요소 Lexical Environment원래는 스코프 체인과 클로저를 구현하기 위해 도입되었으며, let const 가 도입되면서Lexical Environment의 역할이 확장되었다.Variable Environment를 포함하며, let const 변수와 블록 스코프 내의 함수 선언을 저장한다.(Environment Record)또한 외부 환경에 대한 참조도 포함한다.(ounter environment reference)이들은 블록 스코프를 가지며, 더 세밀한 스코프 제어를 가능하게 했다. Variable Environ..
[JavaScript] 메서드 내부함수에서의 this 우회법 (call, apply, 그리고 bind 의 차이 이 글은 this 에서 넘어온 글입니다.https://daunje0.tistory.com/manage/newpost/84?type=post&returnURL=ENTRY Tistory좀 아는 블로거들의 유용한 이야기www.tistory.com   var a = 10; var obj = { a: 20, b: function () { console.log(this.a); // 20 (메서드로써 호출했으므로 obj 객체가 this이다) function c() { console.log(this.a); // 10 (함수로써 호출했으므로 전역 인스턴스 this) } c(); } } obj.b(); call, apply, 그리고 bind는 ..