본문 바로가기
그날의 기록

TIL

by devyongi 2021. 12. 30.

TIL이라고 표현하기는 그렇지만, 컨텍스트 개념을 공부하고 이해하면서 아직 이해가 안되는 부분이 있어서 글로 기록 해두려고 한다. 지금 당장은 뇌정지가 와서 아무 생각이 들지 않는다.....

 

outer의 스코프체이닝 과정을 직접 코드로 작성해보았는데 이 두 코드의 값이 다르게 나온다. 직감적으로는 다르게 나오는게 맞게 느껴지지만, 이론상 outer는 해당 식별자의 값이 없을때에는 이전의 실행 컨텍스트의 렉시컬 환경을 참조하여서 식별자의 값을 가져온다. console.trace를 제일 마지막에 호출되는 함수에 찍어보면 두 코드 모두 스택에 쌓이는 순서가 전역 > 중국집 > 고기집 > 분식집 이기 때문에 outer가 참조하는 대상은 같다고 생각했는데 뭔가 잘못되었나보다. 이게 왜 실행이 다른지 꼭 알아내서 다시 블로깅 해야겠다!

 

let food = "밥";
let state = "배고픔";

function 중국집() {
  let food = "짜장면";
  let state = "배부름";
  고기집();
  function 고기집() {
    let food = "삼겹살";
    let state = "다시배고픔";
    분식집();
    function 분식집() {
      let food = "떡볶이";
      console.log(food);
      console.log(state);
      console.trace();
    }
  }
}

중국집();

 

let food = "밥";
let state = "배고픔";

function 중국집() {
  let food = "짜장면";
  let state = "배부름";
  고기집();
}

function 고기집() {
  let food = "삼겹살";
  let state = "다시배고픔";
  분식집();
}

function 분식집() {
  let food = "떡볶이";
  console.log(food);
  console.log(state);
  console.trace();
}

중국집();

'그날의 기록' 카테고리의 다른 글

TIL  (0) 2022.02.06
TIL  (0) 2021.12.15
나만의 심리테스트 만들기 회고  (0) 2021.11.29
잊고 있었던 4배수 법칙  (0) 2021.11.24

댓글