diff --git "a/Chapter21~30/Chapter23/ch23-\353\254\270\354\240\234.md" "b/Chapter21~30/Chapter23/ch23-\353\254\270\354\240\234.md" index 7050109..5b09dfd 100644 --- "a/Chapter21~30/Chapter23/ch23-\353\254\270\354\240\234.md" +++ "b/Chapter21~30/Chapter23/ch23-\353\254\270\354\240\234.md" @@ -1,10 +1,58 @@ # Chapter23 실행 컨텍스트 + ## 📌문제1 -### 문제 작성 + +### true,false를 고르시오. + +``` +1. 자바스크립트 엔진은 소스코드를 2개의 과정, “소스코드의 평가" 와 “소스코드의 실행” 과정으로 나누어 처리한다. +2. 렉시컬 환경은 식별자와 식별자에 바인딩된 값, 그리고 상위 스코프에대한 참조를 기록하는 자료구조다. +3. 렉시컬 환경은 EnvironmentRecord, OuterLexicalEnvironmentReference로 구성된다. +``` + +### 답안 작성 + +``` + +``` + +
+ +## 📌문제2 + +### 전역 환경 레코드를 구성하는 컴포넌트2가지를 작성하고 각각에서 관리되는 값이 무엇인지 서술하시오. + +``` + ``` + +### 답안 작성 + ``` + +``` + +
+ +## 📌문제3 + +### 다음 코드가 실행될때의 렉시컬환경의 변화에대해서 작성하시오. + +```js +let x = 1; + +if (true) { + let x = 10; + console.log(x); // 10 +} + +console.log(x); // 1 +``` + ### 답안 작성 + ``` + ```
diff --git "a/Chapter21~30/Chapter23/ch23-\355\225\264\354\204\244.md" "b/Chapter21~30/Chapter23/ch23-\355\225\264\354\204\244.md" index 5ab604b..3e6415a 100644 --- "a/Chapter21~30/Chapter23/ch23-\355\225\264\354\204\244.md" +++ "b/Chapter21~30/Chapter23/ch23-\355\225\264\354\204\244.md" @@ -1,10 +1,58 @@ # Chapter23 실행 컨텍스트 + ## 📌문제1 -### 문제 작성 + +### true,false를 고르시오. + +``` +1. 자바스크립트 엔진은 소스코드를 2개의 과정, “소스코드의 평가" 와 “소스코드의 실행” 과정으로 나누어 처리한다. +2. 렉시컬 환경은 식별자와 식별자에 바인딩된 값, 그리고 상위 스코프에대한 참조를 기록하는 자료구조다. +3. 렉시컬 환경은 EnvironmentRecord, OuterLexicalEnvironmentReference로 구성된다. +``` + +### 답안 작성 + +``` + +``` + +
+ +## 📌문제2 + +### 전역 환경 레코드를 구성하는 컴포넌트2가지를 작성하고 각각에서 관리되는 값이 무엇인지 서술하시오. + ``` + ``` -### 정답 및 해설 + +### 답안 작성 + +``` + +``` + +
+ +## 📌문제3 + +### 다음 코드가 실행될때의 렉시컬환경의 변화에대해서 작성하시오. + +```js +let x = 1; + +if (true) { + let x = 10; + console.log(x); // 10 +} + +console.log(x); // 1 +``` + +### 답안 작성 + ``` +-> 코드가 실행되는과정에서 전역 실행컨텍스트의 렉시컬환경은 전역 렉시컬 환경을 가리키다가, if이 실행되는과정에서 if문의 코드블록의 렉시컬 환경을 생성한후 이를 전역 렉시컬 환경을 대체한다. 이때 전역 렉시컬환경은 사라지지않고 코드블록 렉시컬환경의 외부 렉시컬환경에의해 참조되고, if문이 종료되면 다시 전역 렉시컬 환경으로 대체된다. ```
diff --git "a/Chapter21~30/Chapter24/ch24-\353\254\270\354\240\234.md" "b/Chapter21~30/Chapter24/ch24-\353\254\270\354\240\234.md" index 688e36f..d0d113a 100644 --- "a/Chapter21~30/Chapter24/ch24-\353\254\270\354\240\234.md" +++ "b/Chapter21~30/Chapter24/ch24-\353\254\270\354\240\234.md" @@ -1,10 +1,74 @@ # Chapter24 클로저 + ## 📌문제1 -### 문제 작성 + +### 아래코드의 결과가 다음과같은 이유에대해서 설명하시오. + +```js +const x = 1; + +function outerFunc() { + const x = 10; + innerFunc(); +} + +function innerFunc() { + console.log(x); +} + +outerFunc(); // 1 +``` + +### 답안 작성 + +``` + +``` + +
+ +## 📌문제2 + +### 아래코드중 클로저를 찾으시오. + +```js +const x = 1; + +function outer() { + // 1 + const y = 10; + const inner = function () { + console.log(y); + }; // 2 + return inner; +} + +const innerFunc = outer(); +innerFunc(); +``` + +### 답안 작성 + +``` + +``` + +
+ +## 📌문제3 + +### true or false 중 고르시오. + ``` +1.대부분의 모던 브라우저에서의 클로저란 상위스코프를 전체다 기억하는것을 의미한다. + +2.자유변수란 클로저에 의해 참조되고 있지않는 상태의 변수를 의미한다. ``` + ### 답안 작성 + ``` + ```
diff --git "a/Chapter21~30/Chapter24/ch24-\355\225\264\354\204\244.md" "b/Chapter21~30/Chapter24/ch24-\355\225\264\354\204\244.md" index f969798..8270c34 100644 --- "a/Chapter21~30/Chapter24/ch24-\355\225\264\354\204\244.md" +++ "b/Chapter21~30/Chapter24/ch24-\355\225\264\354\204\244.md" @@ -1,10 +1,79 @@ # Chapter24 클로저 + ## 📌문제1 -### 문제 작성 + +### 아래코드의 결과가 다음과같은 이유에대해서 설명하시오. + +```js +const x = 1; + +function outerFunc() { + const x = 10; + innerFunc(); +} + +function innerFunc() { + console.log(x); +} + +outerFunc(); // 1 +``` + +### 답안 작성 + +``` +자바스크립트는 렉시컬 스코프를 따르는 언어이기 때문에, 함수의 호출 위치가아닌, 선언된 위치에의해 상위 스코프를 결정하기 때문에, 10이 아닌 1이 호출결과로 나타난다. +``` + +
+ +## 📌문제2 + +### 아래코드중 클로저를 찾으시오. + +```js +const x = 1; + +function outer() { + // 1 + const y = 10; + const inner = function () { + console.log(y); + }; // 2 + return inner; +} + +const innerFunc = outer(); +innerFunc(); ``` + +### 답안 작성 + ``` -### 정답 및 해설 +→ inner. + + outer함수의 중첩함수인 inner함수는 outer함수의 실행이 종료되고 outer함수의 실행 컨테스트가 실행컨텍스트의 스택에서 제거되었음에도 불구하고 outer함수의 지역변수인 y를 참조하게되기 때문이다. ``` + +
+ +## 📌문제3 + +### true or false 중 고르시오. + +``` +1.대부분의 모던 브라우저에서의 클로저란 상위스코프를 전체다 기억하는것을 의미한다. + +2.자유변수란 클로저에 의해 참조되고 있지않는 상태의 변수를 의미한다. +``` + +### 답안 작성 + +``` +1.false : 상위 스코프의 식별자중에서 기억해야할 식별자만을 기억한다. + +2.false : 참조되는 변수를 자유변수라하고, 클로저란 “자유변수에대해 닫혀있다”, “자유변수에 묶여있는 함수”라고 할 수 있다. + ```