본문 바로가기

interactive service15

05. 코어 자바스크립트_클로저 클로저란 어떤 함수에서 선언한 변수를 참조하는 내부함수를 외부로 전달할 경우, 함수의 실행 컨텍스트가 종료된 후에도 해당 변수가 사라지지 않는 현상이다. 내부함수를 외부로 전달하는 방법에는 함수를 return하는 경우뿐 아니라 콜백으로 전달하는 경우도 포함된다. 클로저는 그 본질이 메모리를 계속 차지하는 개념이므로 더는 사용하지 않게 된 클로저에 대해서는 메모리를 차지하지 않도록 관리해줄 필요가 있다. 2022. 1. 4.
04. 코어 자바스크립트_콜백 함수 1. 콜백 함수는 다른코드에 인자로 넘겨줌으로써 그 제어권도 함께 위임한 함수이다. 2. 제어권을 넘겨받은 코드는 다음과 같은 제어권을 가진다. a) 콜백 함수를 호출하는 시점을 스스로 판단해서 실행한다. b) 콜백 함수를 호출할 때 인자로 넘겨줄 값들 및 그 순서가 정해져 있다. 이 순서를 따르지 않고 코드를 작성하면 엉뚱한 결과를 얻게 된다. c) 콜백 함수 내의 this가 무엇을 바라보도록 할지가 정해져 있는 경우도 있다. 정하지 않은 경우에는 전역객체를 바라본다. 사용자가 임의로 this를 바꾸고 싶을 경우 bind 메서드를 활용하면 된다. 3. 어떤 함수에 인자로 메서드를 전달하더라도 이는 결국 함수로서 실행된다. 4. 비동기 제어를 위해 콜백 함수를 사용하다 보면 콜백 지옥에 빠지기 쉽습니다... 2022. 1. 3.
03. 코어 자바스크립트_this 다른 대부분의 객체지향 언어에서 this는 클래스로 생성한 인스턴스 객체를 의미한다. 그러나 자바스크립트에서의 this는 어디서든 사용할 수 있다. 상황에 따라 this가 바라보는 대상이 달라지는데, 어떤 이유로 그렇게 되는지를 파악하기 힘든 경우도 있고 예상과 다르게 엉뚱한 대상을 바라보는 경우도 있다. 이런 경우에 문제를 해결하려면 원인을 추적해서 수정해야 하는데, 정확한 작동 방식을 이해하지 못하면 원인을 파악해서 해결할 수 없을 것이다. 함수와 객체(메서드)의 구분이 느슨한 자바스크립트에서 this는 실질적으로 이 둘을 구분하는 거의 유일한 기능이다. 다음 규칙은 명시적 this 바인딩이 없는 한 늘 성립한다. 원리를 바탕으로 꾸준히 다양한 상황에서 this가 무엇일지 예측해보는 연습이 필요하다... 2022. 1. 3.
02. 코어 자바스크립트_실행 컨텍스트 실행 컨텍스트는 실행할 코드에 제공할 환경 정보들을 모아 놓은 객체이다. 실행 컨텍스트는 전역 공간에서 자동으로 생성되는 전역 컨텍스트와 eval 및 함수 실행에 의한 컨텍스트 등이 있다. 실행 컨텍스트 객체는 활성화되는 시점에 variableEnvironment, LexicalEnvironment, ThisBinding의 세 가지 정보를 수집한다. 실행 컨텍스트를 생성할 때는 VariableEnvironment와 LexicalEnvironment가 동일한 내용으로 구성되지만 LexicalEnvironment는 함수 실행 도중에 변경되는 사항이 즉시 반영되는 반면 VariableEnvironment는 초기 상태를 유지한다. VariableEnvironment와 LexicalEnvironment는 매개변수.. 2022. 1. 3.