JS Scope

HSKwon·2022년 7월 1일
0

실행 context
실행 컨텍스트: 실행할 코드에 제공할 환경 정보를 모아둔 객체
→만들 수 있는 방법: 함수를 실행하는 것이 가장 대표적
자바스크립트는 데이터를 콜 스택에 저장

실행 컨텍스트의 구성
lexical environment : 처음에는 variables과 같지만 변경사항이 실시간으로 반영됨
variables environment: 식별자의 정보, 선언위치, 외부환경 정보, lexical에 포함되고 변경되지 않음
this binding : this 식별자가 바라봐야 할 대상 객체
스코프
크게 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이 출력됨
profile
공부한 내용이나 관심 있는 정보를 글로 정리하며 익숙하게 만들고자 합니다.

0개의 댓글