[자바스크립트 정리] 실행 컨텍스트2. scope, scope chain

Kyungoh Kang·2021년 1월 24일
0

javascript 정리

목록 보기
3/7

scope

  1. 스코프란 변수가 인식되는 범위 혹은 유효성을 가지는 범위.
    • 스코프는 오직 함수에 의해서만 생성될 수 있다.(전역스코프 제외)

scope chain

  1. 스코프 체인이란 스코프를 안에서부터 바깥으로 검색해나가는 것이다.

  2. outerEnvironmentReference = 실행 컨텍스트가 활성화 될 때 lexical environment가 수집하는 값 중 하나로 현재 호출된 함수가 '선언될 때'의 상위 lexical environment를 참조.
    -예시

    		let a = funciton () {
    	let b = function () {
        	let c = function () {
            	...
            }
        }
    }
      ```
      
      - c의 outerEnvironment는 b의 lexical environment를 참조하고 b의 o.e는 a의 l.e를 참조한다.
      - 전역 -> a -> b-> c 순으로 스코프 체인이 생성되고 작은 규모의 함수에서 접근할 수 있는 변수가 가장 많다.
      - 다른 스코프에 같은 변수가 있을 경우 함수가 실행되면서 가장 먼저 발견하는 변수에만 접근 가능하다.(변수 은닉화)
    
      
    ### 전역변수, 지역변수
    
  3. 전역변수 = 전역공간에서 선언한 변수

  4. 지역변수 = 함수 내부에서 선언한 변수

    cf) 전역변수들은 여러 함수에 영향을 줄 수 있기 때문에 코드의 안정성을 위해서 전역 변수 사용은 지양하는게 좋다.

    정리

  • 어떤 함수가 호출 되면 해당 함수의 실행 컨텍스트가 활성화되고 해당 함수를 실행하기 위한 정보들이 모아진다. 이 정보들은 variable environment(변수 초기 정보), lexical environment(변수 초기부터 변동하는 과정의 정보), thisbinding(this에 관한 정보)세가지가 있고 l.e는 다시 outerEnvironmentReference, environmentRecord(매개변수명, 변수명, 함수명 등) 둘로 나눌 수 있고 o.e는 l.e를 참조한다.
  • outer environment reference는 해당 함수가 선언된 위치의 l.e를 참조하고 어떤 변수에 접근할 때 먼저 현재 함수 스코프내의 l.e를 검색, 찾는 변수가 없으면 o.e에 있는 l.e를 검색한다. --> 스코프 체인

0개의 댓글