WIT – NTS UIT Blog

[번역] ECMA-262-3 in detail. Chapter 6. Closures.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 6. Closures. by Dmitry Soshnikov 소개(Introduction) 이번에는 JavaScript의 아주 중요한 개념인 클로저(Closures)에 대해서 알아보겠다. 그 동안 여러 번 이야기했던 내용으로 새로운 것은 아니지만, 이론적인 관점에서 조금 더 깊이 있게 들여다 보고 ECMAScript가 어떻게 클로저를 다루는지 설명할 생각이다. 이번 챕터를 이해하려면 스코프 체인(Scope chain)과 변수 객체(Variable Object)의 개념을 알아야하기 때문에,  이전에 공부했던 내용을 다시 한 번 정리하고 넘어가자. 일반 이론(General theory) 바로 ECMAScript의 클로저를 논의하기 전에, 함수형 프로그래밍의 일반 이론에서 정의하고 있는 내용을 구체화 할 필요가 있다. 다들 알고 있듯이, 함수형 언어에서(ECMAscript는 함수형 언어의 패러다임과…read more

0

[번역] ECMA-262-3 in detail. Chapter 5. Functions.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 5.Functions. by Dmitry Soshnikov 소개(Introduction) 이번 글에서는 ECMAscript의 객체 중에 하나인 함수(Function)를 알아보고, 함수에는 어떠한 것들이 있는지 설명한다. 함수가 콘텍스트의 변수 객체(Variables object)에 어떠한 영향을 미치며, 각 함수의 스코프 체인에는 무엇이 들어가는지도 알아볼 계획이다. 다음과 같은 질문을 자주 받는다. 첫 번째 함수,

  일반적인 방식으로 작성한 두 번째 함수.

  “두 함수는 뭐가 다르죠?” 또는 “왜 아래 함수는 괄호로 감싼 거예요?” 와 같은 질문을 받기도 한다.

  이 글은 이전 챕터와 관련있기 때문에, 아래에 나오는 내용을 제대로 이해를 하려면 Chapter 2. Variable…read more

0

[번역] ECMA-262-3 in detail. Chapter 4. Scope chain.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 4. Scope chain.. by Dmitry Soshnikov 소개(Introduction) 변수 객체를 살펴보았던 두 번째 챕터에서 보았듯이, 실행 콘텍스트의 데이터(변수, 함수 선언 그리고 함수의 형식 매개변수)는 변수 객체의 프로퍼티로 저장된다. 그리고 콘텍스트로 진입할 때 매번 초기값을 갖는 변수 객체를 생성하며, 코드 실행 단계에서 값을 갱신한다는 사실도 배웠다. 이 챕터에서 실행 콘텍스트와 직접적으로 관련있는 내용 한 가지를 더 자세히 알아볼텐데, 이번 주제는 바로 스코프 체인(scope chain)이다. 정의(Definitions) 간략하게 요점만 살펴보면, 스코프 체인은 대게 중첩 함수와 관련이 있다. 다들 알고 있듯이, ECMAScript는 중첩 함수를 허용하며 심지어 부모 함수가 이러한…read more

0

[번역] ECMA-262-3 in detail. Chapter 3. This.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 3. This. by Dmitry Soshnikov 소개(Introduction) 이 글에서는 실행 콘텍스트와 관련있는 내용을 더 자세하게 알아볼 것이다. 이번 주제는 this 키워드다. 사례에서 보듯이, 이 주제는 상당히 어려워서 종종 다른 실행 콘텍스트의 this 값을 처리할 때 이슈를 만들곤 한다. 많은 프로그래머가 프로그래밍 언어의 this 키워드가 객체 지향 프로그래밍과 관련이 있다고 생각한다. 정확하게는 생성자를 이용해서 새롭게 만들어진 객체를 참조한다고 생각한다. ECMAScript에도 이 개념은 정의되어 있다. 그러나 앞으로 보게 될 것처럼, ECMAScript는 this의 정의를 오직 생성한 객체로 제한하지 않는다. 자, 그러면 ECMAScript에서 사용하는 this의 정확한 의미를 살펴보자. 정의(Definitions) this는…read more

0

[번역] ECMA-262-3 in detail. Chapter 2. Variable object.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 2. Variable object by Dmitry Soshnikov 소개(Introduction) 프로그램을 개발할 때 우리는 항상 함수와 변수를 선언하고 이것을 이용해서 성공적으로 시스템을 구축한다. 그런데 인터프리터는 어떻게, 어디에서 데이터(함수, 변수)를 찾을까? 우리가 필요한 객체를 참조할 때 무슨 일이 일어나는 걸까? 많은 ECMAScript 프로그래머들이 변수와 실행 콘텍스트가 서로 밀접하게 연관되어 있다는 사실을 알고 있다.  

  또한 현재 버전의 ECMA 스펙에서는 오직 “함수” 코드의 실행 콘텍스트만이 격리된 유효범위(scope)를 만들 수 있다는 것도 알고 있다. 이것은 C/C++의 경우와는 반대이다. 예를 들어 보면, ECMAScript의 for 루프 블럭은 지역 콘텍스트를 만들지 않는다….read more

0

[번역] ECMA-262-3 in detail. Chapter 1. Execution Contexts.

Posted by in Research

원문 출처 : ECMA-262-3 in detail. Chapter 1. Execution Contexts by Dmitry Soshnikov 소개 이 글은 ECMAScript의 실행 콘텍스트(execution contexts), 그리고 실행 콘텍스트와 관련있는 실행 코드(Executable code)에 대해서 이야기 한다. 정의 ECMAScript의 실행 코드로 제어가 전달되면, 이 제어는 실행 콘텍스트으로 진입한다. 실행 콘텍스트(Execution context, 이하 EC)는 실행 가능한 코드의 유형을 나누고 구별하기 위해서, ECMA-262 스펙이 정의하고 있는 추상적인 개념이다. 표준은 기술적인 관점에서 정확한 실행 콘텍스트의 구조와 종류를 정의하고 있지는 않다. 구체적인 내용은 표준 스펙을 구현하는 ECMAScript 엔진이 처리해야 할 문제이다. 활성화된 실행 콘텍스트들은 논리적으로 스택의 형태를 구성하고 있다.  스택의 바닥(bottom)에는 항상 전역 문맥(global…read more

0