JavaScript - 함수 스코프, 실행컨텍스트
in JS on Scope, Hoisting
스코프 : 변수의 유효범위 정의될 때 결정된다.
실행 컨텍스트 : 실행되는 코드덩어리(추상적) 실행될 때 생성된다.
호이스팅, 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
- 변수 a 선언
- 함수 outer 선언. global scope>outer
- 변수 a에 1할당
- outer 호출 > outer 실행컨텍스트 생성
- 함수 inner 선언 global>outer>inner scope
- outer scope에서 a탐색 -> global scope에서 a 탐색 ->1
- inner 함수 호출 -> inner 실행컨텍스트 생성 1. 변수 a 선언 2. inner scope에서 a 탐색-> undefined 출력
- inner 실행컨텍스트 종료
- outer scope에서 a 탐색 -> global scope에서 a 탐색 -> 1출력
- 전역 컨텍스트 종료