관리 메뉴

프로그래밍 삽질 중

스코프 체인 본문

과거 프로그래밍 자료들/Javascript&typescript

스코프 체인

평부 2022. 9. 9. 15:01

* 참고한 강의

https://www.youtube.com/watch?v=0lF2zaQ31Ek&list=PLcqDmjxt30Rt9wmSlw1u6sBYr-aZmpNB3&index=4 

 

스코프 체인

- 함수에서 어떤 값에 접근이 가능한지? 어떤 값에 접근이 불가능한지?

 

 

[예시]

const x = "x";
//선언
function c() {
  const y = "y";
  console.log("c");
  function b() {
    const z = "z";
    console.log(b);
    c();
  }
}
//선언
function a() {
  const x = "x";
  console.log("a");
  b();
}

a();
c();

* 선언에 대한 지도로 확인해보면 a는 b로 접근 불가

* Lexical scope : 함수를 어디서 선언하였는지에 따라 상위 스코프를 결정하는 것이다.

중요한 점은 함수의 호출이 아니라 함수의 선언에 따라 결정된다

(참고 : https://velog.io/@ksh4820/Lexical-scoped%EC%99%80-%ED%81%B4%EB%A1%9C%EC%A0%80)

 

Lexical scope와 클로저

프로그래밍에서 scope란 변수의 유효범위를 나타내는 용어이다. Javascript는 Lexical scope를 따르고 있다는데 그럼 Lexical scope는 무엇일까?결론부터 말하면 Lexical scope는 함수를 어디서 선언하였는지에

velog.io

 

 

Lexical scope 예시

var num = 1;

function a() {
  var num = 10;
  b();
}

function b() {
  console.log(num);
}
 
a(); //1
b(); //1