lexical environment 3

[Javascript] Closure란?

Closure는 JS를 이용해서 개발을 할 때 한 번쯤 들어봤을 개념입니다. 중요한 개념이라고 하는데 많이 헷갈리기에 내부적으로 어떻게 동작하는지 정리하려고 합니다. Closure란? 클로저는 외부 함수가 반환된 후에도 외부 함수 scope에 접근할 수 있는 함수입니다. 즉, 클로저는 함수가 완료된 후에도 외부 함수의 변수와 인수를 기억하고 접근할 수 있습니다. Scope Closure에 앞서 scope에 대해서 알고 있어야 합니다. scope는 말그대로 범위입니다. scope에는 3가지 종류가 있습니다. Global scope Function scope(local scope) Block scope 다음과 같은 예시를 통해서 scope에 대해 알아보겠습니다. console.log('global scope..

[Javascript] Javscript 동작(2)

이전 글에서 Javascript가 어떻게 동작하는지를 알아봤습니다. JS engine이 create phase에서 execution context라는 것을 만듭니다. 처음 코드를 접했을 때는 global execution context를 만들어 execution stack(call stack)에 push를 하고 함수가 호출될 때마다 각 함수만의 execution context를 만들어서 stack에 push합니다. 그 후에 실행을 시키고 stack에서 pop을 하게 됩니다. 저번 글에서 creation phase 부분에서 execution context를 생성한다고 하였고 이번 글에서는 execution phase에 대해서 이야기해보려고 합니다. 이전 글을 못 보셨으면 먼저 읽고 오시길 바랍니다. 202..

[Javascript] Javascript 동작(1)

Javascript란? Javascript는 싱글 쓰레드로 동작하는 객체 기반의 스크립트 언어입니다. 웹 브라우저나 Node와 같은 런타임 환경에서 실행이 됩니다. Javascript에는 hoisting, call by sharing, prototype, closure 등 다른 프로그래밍 언어에서 찾아볼 수 없는 특징들이 있습니다. 또한 런타임 환경에서는 비동기 작업을 하기도 합니다. Javascript는 어떻게 동작할까? Javascript가 어떻게 동작하는지 알기 위해서 먼저 Execution context와 Execution Stack에 대해서 알아야 합니다. Execution context와 stack에 대해서 잘 알면 나중에 hoistong이나 closure와 같은 개념에 대해서 더 잘 이해할 ..