> 웹 프론트엔드 > JS 튜토리얼 > 범위 체인이란 무엇이며 어떻게 작동합니까?

범위 체인이란 무엇이며 어떻게 작동합니까?

Susan Sarandon
풀어 주다: 2024-12-05 00:57:11
원래의
432명이 탐색했습니다.

소개

JavaScript에서 변수에 액세스하는 방법을 이해하는 것은 깔끔하고 효율적이며 버그 없는 코드를 작성하는 데 필수적입니다. 범위 체인은 변수 액세스와 코드 실행 컨텍스트를 제어하는 ​​중요한 개념입니다.

이 글에서는 스코프 체인이 무엇인지, JavaScript에서 어떻게 작동하는지 설명하고 동작을 보여주는 실제 예를 제공합니다.

스코프체인이란 무엇인가요?

스코프 체인은 실행 중에 변수와 함수가 조회되는 순서를 결정하는 JavaScript의 메커니즘입니다.

코드에서 변수가 참조되면 JavaScript는 다음 순서로 해당 변수를 검색합니다.

? 로컬 스코프: 변수가 직접 선언되는 함수나 블록

??‍? 외부 범위: 함수 또는 블록을 둘러싸며 레이어별로 바깥쪽으로 이동합니다.

? 글로벌 범위: 프로그램의 가장 바깥쪽 범위

이러한 범위에서 변수를 찾을 수 없으면 JavaScript에서 ReferenceError가 발생합니다.

스코프 체인은 어떻게 작동하나요?

1. 로컬 범위
함수 내부에 선언된 변수는 해당 함수의 범위에 속하며 외부에서는 접근할 수 없습니다.

function localExample() {
  let message = "Hello, Local Scope!";
  console.log(message); // Works
}
console.log(message); // ReferenceError: message is not defined
로그인 후 복사

2. 중첩 함수 및 외부 범위

중첩 함수는 범위 체인으로 인해 상위 함수의 변수에 액세스할 수 있습니다.

function outer() {
  let outerVariable = "I'm in the outer function!";

  function inner() {
    console.log(outerVariable); // Accessible due to the scope chain
  }

  inner();
}
outer();
로그인 후 복사

3. 글로벌 범위

함수 외부에서 선언된 변수는 전역 범위의 일부이며 어디에서나 액세스할 수 있습니다(모듈 내부 제외).

let globalVariable = "I'm in the global scope!";
function showGlobal() {
  console.log(globalVariable); // Accessible
}
showGlobal();
로그인 후 복사

4. 섀도잉

로컬 범위의 변수가 외부 범위의 변수와 동일한 이름을 갖는 경우 로컬 변수는 외부 변수를 "가립니다".

let name = "Global Name";

function greet() {
  let name = "Local Name";
  console.log(name); // Outputs: "Local Name"
}

greet();
console.log(name); // Outputs: "Global Name"
로그인 후 복사

스코프체인의 실제 사례

스코프 체인이 변수 액세스를 어떻게 해결하는지 살펴보겠습니다.

let globalVar = "Global";

function outerFunction() {
  let outerVar = "Outer";

  function innerFunction() {
    let innerVar = "Inner";

    console.log(innerVar);   // Found in local scope
    console.log(outerVar);   // Found in outer scope
    console.log(globalVar);  // Found in global scope
  }

  innerFunction();
}
outerFunction();
로그인 후 복사

출력:

Inner
Outer
Global
로그인 후 복사

상황은 다음과 같습니다.

1️⃣ innerVar는 innerFunction의 로컬 범위에 있습니다.
2️⃣ externalVar는 outerFunction의 상위(외부) 범위에 있습니다.
3️⃣ globalVar는 내부 또는 외부 범위에 정의되어 있지 않으므로 전역 범위에서 발견됩니다.

스코프 체인과 클로저

JavaScript의 클로저는 범위 체인을 활용하여 외부 함수가 실행된 후에도 외부 함수 변수에 대한 액세스를 유지합니다.

function makeCounter() {
  let count = 0;

  return function () {
    count++;
    return count;
  };
}

const counter = makeCounter();
console.log(counter()); // Outputs: 1
console.log(counter()); // Outputs: 2
로그인 후 복사

여기서 내부 함수는 count에 대한 클로저를 형성하여 makeCounter가 실행을 마친 후에도 범위 체인에 이를 유지합니다.

결론

스코프 체인은 JavaScript 실행 컨텍스트의 중요한 부분입니다. 범위 체인이 변수 액세스를 해결하는 방법을 이해하면 더 명확하고 예측 가능한 코드를 작성할 수 있습니다. 중첩 함수부터 클로저까지 이 개념을 익히면 JavaScript 기술이 향상되고 디버깅 프로세스가 향상됩니다.

What is the Scope Chain and How Does It Work?

위 내용은 범위 체인이란 무엇이며 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿