yuzunsang / JS-deep-dive-study

자바스크립트 딥 다이브 스터디✨
0 stars 3 forks source link

[CH23]실행 컨텍스트 #36

Open yuzunsang opened 3 months ago

yuzunsang commented 3 months ago

[퀴즈 예시] Q. 여기에 퀴즈 설명을 적으세요.

적을 코드가 있다면 밑에 적어주세요. (백틱 3개로 코드를 감싸면 코드 양식을 적을 수 있습니다.)

// 예시 코드
const arr = [1, 2, 3];
console.log("Hello");

아래 코드를 복붙해서 정답을 적어주세요.

<details>
    <summary>정답</summary>
    <div markdown="1">    
    정답 설명
    </div>
</details>
yuzunsang commented 3 months ago

Q. 실행 컨텍스트 스택이 추가되고 제거되는 과정을 떠올리며 보기의 순서를 정렬하세요.

const x = 1;

function foo() {
  const y = 2;

  function bar () {
    const z = 3;
    console.log(x + y + z);
  }
  bar();
}

foo();

[보기]

  1. 전역 코드의 평가와 실행
  2. bar 함수 코드의 평가와 실행
  3. foo 함수 코드의 평가와 실행
  4. foo 함수 코드로 복귀
  5. 전역 코드로 복귀
정답
1 - 3 - 2 - 4 - 5
bo-eun commented 3 months ago

Q1. 다음 코드의 실행 결과를 예상해보고 이유를 설명하세요.

for(let i = 0; i < 5; i++) {
    setTimeout(() => {
        console.log(i);
    }, 1000)
};
정답
0 1 2 3 4 ![image](https://github.com/yuzunsang/JS-deep-dive-study/assets/169366835/734f291d-8df2-4eca-b573-0f87ce8759dd)

Q2. 다음 코드의 실행 결과를 예상해보고 이유를 설명하세요.

const x = 1;
function foo() {
   eval('var x = 2');
  console.log(x);
}

foo();
console.log(x);
정답
2
1 eval함수는 독자적인 실행 컨텍스트를 생성하여 독자적인 스코프를 갖는다. 따라서 foo함수 스코프에서 x는 2이다.
J-yun-ji commented 3 months ago

Q. 실행 컨텍스트의 역할은 무엇인가?

정답
1. 전역 코드 평가
2. 전역 코드 실행
3. 함수 코드 평가
4. 함수 코드 실행