less than 1 minute read

JS 와 Python 의 외부 변수 참조

클로져 VS Call By Assignment
  • Python

    function 에 argument를 전달할 때 call by assignment 라는 방식으로 전달됨

    • call by assignment

      파라미터나 argument는 전달받는 객체에 따라 객체의 참조 방식이 결정됨

      Mutable Object (list, dict, set 등의 객체)는 Call by reference, 즉 변수 자체에 CRUD 작업이 가능함

      Immutable Object (str, int, tuple 등의 객체)는 Call by value, 즉 변수의 값만 참조 가능

  • JS

    실행 중인 함수나, 코드 블록, 스크립트 전체는 Lexical Environment 이라 불리는 내부 숨긴 연관 객체를 갖음

    • Lexical Environment

      환경레코드(모든 지역 변수롸 this 같은 기타 정보를 프로퍼티로 저장하는 객체), 외부 렉시컬 환경에 대한 참조(외부 코드와 연관됨)를 함

      • 외부 렉시컬 환경

        내부 렉시컬 환경은 외부 렉시컬 환경에 대한 참조를 갖음

        외부 렉시컬 환경에 대한 참조에 따라 외부 변수의 객체 타입에 상관 없이 코드 블럭 바깥의 변수들에 대해 CRUD 작업을 할 수 있음

Categories: ,

Updated: