두치의 개발공부

렉시컬 스코프(Lexical Scope) 본문

언어/JavaScript

렉시컬 스코프(Lexical Scope)

Du_chi 2022. 4. 4. 14:51

렉시컬 스코프(Lexical Scope)란?

함수를 어디서 호출하였는지가 아니라 어디에서 선언하였는지에 따라 함수의 결과가 결정되는 것을 말합니다.

=> 함수가 어디서 선언되었는지에 따라 상위 스코프를 결정합니다.

 

렉시컬 스코프 예제

예시 코드를 통해서 알아보도록 하겠습니다!

var temp = 1;

function a() {
  var temp = 100;
  b();
}

function b() {
  console.log(temp);
}

a();
b();

 

위 코드의 결과는 100 , 1 일거라고 예상되지만 결과는 1, 1입니다.

b() 함수가 a()함수 안에서 호출된 것과는 무관하게 b()함수가 전역에 선언되어 있으므로 100이 아닌 1을 출력하게 됩니다.

※자바스크립트 엔진은 자신이 속한 스코프에서 식별자를 먼저 찾고 없을 경우에는 상위 스코프에서 다시 찾습니다.

 

다른 개념으로 동적 스코프(Dynamic Scope)도 있습니다.

동적 스코프는 함수가 어디서 호출되었는지에 따라 상위 스코프를 결정하게 됩니다.

'언어 > JavaScript' 카테고리의 다른 글

이벤트 루프(event loop)  (0) 2022.03.28
함수 아규먼츠(arguments)  (0) 2022.02.20
호이스팅  (0) 2022.01.09
클로저  (0) 2022.01.09
setTimeout vs setInterval  (0) 2022.01.09