[Javascript] Context

null·2023년 4월 4일
0

Javascript

목록 보기
2/3

javascript context(문맥)

  • 코드가 실행되는 환경으로 실행되는 코드에 대한 정보와 함께 변수, 함수 및 객체에 대한 액세스 권한을 제공

    • 변수, 함수 및 객체의 범위(scope)
    • 변수 및 함수에 대한 액세스 권한
    • this 키워드가 참조하는 객체
    • 실행 순서
  • context는 call stack(호출 스택)이라는 데이터 구조로 관리된다
    -- 현재 실행 중인 context를 저장하는 stack 구조
    -- 함수가 호출될 때마다 새로운 context가 stack에 추가 -> 함수 호출
    -- 함수 실행이 끝나면 해당 context가 stack에서 제거 -> 함수 반환

  • context 원칙 4가지
    -- 전역 context 하나 생성 후, 함수 호출 시마다 컨텍스트가 생긴다
    -- context 생성 시 context안에 변수객체(arguments, variable), scope chain, this 생성
    -- context 생성 후 함수가 실행될 때 변수들은 변수 객체 안에서 값을 찾고, 없으면 scope chain을 따라 올라가며 찾는다
    -- 함수 실행이 마무리되면 해당 context는 사라짐
    -- 페이지가 종료되면 전역 context가 사라짐

  • this
    -- 현재 실행되고 있는 코드의 context를 가리키는 키워드
    -- 코드의 실행 context의 따라 참조하는 값이 달라진다

    - 일반 함수 호출 'this' = 전역 객체(global object)
    - 메서드 호출 'this' = 객체의 메서드 내부에서의 해당 객체
    - 생성자 함수 호출 'this' = 생성자 함수 내부에서 새로 생성된 객체

    -- 함수의 scope는 코드의 구조에 의해서 결정되지만, 'this'는 코드가 호출되는 방식에 따라 동적으로 바뀔 수 있다

  • 호이스팅
    -- 변수를 선언하고 초기화했을 때 선언 부분이 최상단으로 끌어올려지는 현상

0개의 댓글