JavaScript - 함수 스코프, 실행컨텍스트


  1. 스코프 : 변수의 유효범위 정의될 때 결정된다.

  2. 실행 컨텍스트 : 실행되는 코드덩어리(추상적) 실행될 때 생성된다.

호이스팅, this 바인딩(결속시키는거, 연결하는거) 등의 정보가 담긴다.

내부적으로 해당 함수를 실행시키기 위해 필요한 정보를 모아놓은 집합체

var a = 1;
function outer(){
  console.log(a); //1
  
  function inner(){
    console.log(a); //2
    var a = 3;
  }
  
  inner();
  
  console.log(a); //3
}
outer();
console.log(a); //4

1 -> undefined -> 1 -> 1

  1. 변수 a 선언
  2. 함수 outer 선언. global scope>outer
  3. 변수 a에 1할당
  4. outer 호출 > outer 실행컨텍스트 생성
  5. 함수 inner 선언 global>outer>inner scope
  6. outer scope에서 a탐색 -> global scope에서 a 탐색 ->1
  7. inner 함수 호출 -> inner 실행컨텍스트 생성 1. 변수 a 선언 2. inner scope에서 a 탐색-> undefined 출력
  8. inner 실행컨텍스트 종료
  9. outer scope에서 a 탐색 -> global scope에서 a 탐색 -> 1출력
  10. 전역 컨텍스트 종료