두 손끝의 창조자

javascript는 렉시컬 스코프를 가진 언어이다. 본문

프로그래밍언어/Javascript

javascript는 렉시컬 스코프를 가진 언어이다.

codinglog 2023. 3. 21. 09:21

자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 이를 렉시컬 스코프(정적 스코프)라 한다.

따라서 아래 코드의 실행결과는 두 함수 모두 1을 반환한다.

const x = 1;
function foo(){
    const x = 10;
    bar();
}
function bar(){
    console.log(x);
}
foo();
bar();

파이썬에도 비슷하게 동작한다.

x = 1


def foo():
    x = 10
    bar()


def bar():
    print(x)


foo()
bar()

상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정된다.=> 렉시컬 스코프

반응형
Comments