실행 컨텍스트: 실행할 코드에 제공할 환경 정보를 모아둔 객체
→만들 수 있는 방법: 함수를 실행하는 것이 가장 대표적
자바스크립트는 데이터를 콜 스택에 저장
크게 2가지 타입이 존재: global(전역), local(지역)
자바스크립트에서 함수를 선언하면 선언할 때마다 새로운 스코프가 생성됨
함수 안에 선언된 변수는 함수 내부에서만 접근할 수 있다->함수 스코프
그 외에 중괄호로 둘러싸인 부분인 블록 스코프 등도 있음
해당 스코프에서 찾아보고 없으면 상위 스코프에서 찾는 과정(global까지 올라감)
function aaa(){
const apple=3
return function bbb(){
const banana=10
// 스코프 체인 : bbb보다 상위에 있는 aaa함수에서 apple을 찾음
return apple
}
}
//aaa()가 곧 function bbb()
aaa()() // result: 3
bbb안에 apple이 없기 때문에 bbb보다 상위에 있는 aaa함수에서 apple을 찾음
매개변수가 들어가는 경우
function aaa(apple){
return function bbb(banana){
console.log(apple)
}
}
aaa(10)(3) //aaa 매개변수인 10이 출력됨