JS 와 Python 의 외부 변수 참조
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 작업을 할 수 있음
-
-