> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 범위 및 범위 체인 이해

JavaScript의 범위 및 범위 체인 이해

DDD
풀어 주다: 2024-11-13 12:35:02
원래의
273명이 탐색했습니다.

Understanding Scope and Scope Chaining in JavaScript

JavaScript 개발자는 범위, 범위 체인, 어휘 환경 및 다양한 유형의 범위(전역, 기능 및 로컬)와 같은 용어를 자주 접합니다. 이러한 개념은 변수와 함수가 어떻게 작동하는지, 어떻게 액세스할 수 있는지, JavaScript가 코드를 실행할 때 이를 찾는 방법을 이해하는 데 중요합니다. 이 블로그에서는 JavaScript의 범위 및 범위 연결을 마스터하는 데 도움이 되도록 이러한 주제를 세분화하겠습니다.

1. 스코프란 무엇인가요?

JavaScript에서 범위는 변수와 함수의 접근성 또는 가시성을 정의합니다. 변수를 사용할 수 있는 곳과 그렇지 않은 곳을 결정합니다. 예를 들어, 한 함수에 정의된 변수는 다른 함수에서 또는 전역적으로 액세스할 수 없을 수도 있습니다. JavaScript에는 알아야 할 여러 유형의 범위가 있습니다.

  • 글로벌 범위
  • 기능 범위
  • 블록/로컬 범위

이러한 다양한 유형의 범위를 이해하면 효율적이고 버그 없는 코드를 작성하는 데 도움이 됩니다.

2. 어휘 환경

다양한 유형의 범위를 살펴보기 전에 어휘 환경을 이해하는 것이 중요합니다. JavaScript 코드가 실행될 때마다 코드의 특정 부분에 정의된 변수와 함수를 관리하기 위한 어휘 환경이 생성됩니다. 어휘 환경은 다음으로 구성됩니다.

  • 환경 기록 – 범위 내에서 변수와 함수를 저장합니다.
  • 외부 환경에 대한 참조 – 범위 체인을 허용하는 외부 어휘 환경(종종 상위 환경이라고도 함)에 대한 링크를 유지합니다.

JavaScript는 어휘 환경을 사용하여 코드가 작성된 위치(반드시 실행되는 위치는 아님)를 기반으로 변수 접근성을 결정합니다. 이 프로세스를 어휘 범위 지정이라고 합니다.

3. JavaScript의 범위 유형

a) 글로벌 범위

전역 범위는 변수나 함수가 가장 바깥쪽 컨텍스트(즉, 함수나 블록 내부가 아닌)에 정의되어 있음을 의미합니다. 전역 범위에 정의된 변수는 코드 내 어디에서나 접근 가능합니다.

let globalVar = "I'm global!";

function printGlobalVar() {
    console.log(globalVar); // Accessible here
}

printGlobalVar(); // Output: I'm global
console.log(globalVar); // Also accessible here

로그인 후 복사
로그인 후 복사

이 예에서 globalVar는 전역 범위에 정의되어 printGlobalVar 함수 내부와 외부 모두에서 액세스할 수 있습니다.

b) 기능 범위

JavaScript에는 기능 범위가 있습니다. 즉, var, let 또는 const를 사용하여 함수 내부에 선언된 변수는 해당 함수 외부에서 액세스할 수 없습니다. 함수는 자체 범위를 만들고 그 안에 정의된 변수를 제한합니다.

function myFunction() {
    let localVar = "I'm local!";
    console.log(localVar); // Output: I'm local!
}

myFunction();
console.log(localVar); // Error: localVar is not defined

로그인 후 복사
로그인 후 복사

여기서 localVar는 myFunction 내부에 정의되어 있으며 외부에서는 액세스할 수 없어 기능 범위를 보여줍니다.

c) 블록 스코프(로컬 스코프)

블록 범위 또는 로컬 범위는 변수 가시성을 자신이 정의된 블록으로 제한합니다. 블록({}) 내에서 let 또는 const로 선언된 변수는 해당 블록 내에서만 액세스할 수 있습니다. 반면 var는 블록 범위를 따르지 않고 대신 기능 범위를 따릅니다.

let globalVar = "I'm global!";

function printGlobalVar() {
    console.log(globalVar); // Accessible here
}

printGlobalVar(); // Output: I'm global
console.log(globalVar); // Also accessible here

로그인 후 복사
로그인 후 복사

이 경우 blockVar는 if 블록 내에서만 액세스할 수 있으며 let을 사용하여 블록 범위를 보여줍니다. 이 동작은 루프와 조건문을 처리할 때 매우 중요합니다.

4. 범위 체이닝

범위 체이닝은 변수를 찾거나 전역 범위에 도달할 때까지 여러 범위를 통해 위로 이동하여 변수 값을 찾는 JavaScript의 메커니즘입니다. 이 프로세스는 어휘 범위 지정을 통해 작동합니다. 즉, 코드 구조(함수가 작성되는 위치)에 따라 먼저 검색할 범위가 결정됩니다.

function myFunction() {
    let localVar = "I'm local!";
    console.log(localVar); // Output: I'm local!
}

myFunction();
console.log(localVar); // Error: localVar is not defined

로그인 후 복사
로그인 후 복사

위의 예에서:

  1. innerFunction은 범위 체인으로 인해 innerVar, externalVar 및 globalVar에 액세스할 수 있습니다.
  2. JavaScript는 먼저 각 변수의 로컬 범위(innerFunction)를 확인한 다음, 바깥쪽 함수의 범위(outerFunction), 마지막으로 전역 범위를 확인합니다.

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

5. 범위가 코드에 미치는 영향

JavaScript의 범위 체인 및 어휘 환경을 이해하고 활용하면 코드를 더욱 효율적이고 안전하게 만들 수 있습니다. 다음은 몇 가지 모범 사례입니다.

  • 전역 변수 최소화: 전역 변수가 너무 많으면 특히 여러 스크립트를 처리할 때 예상치 못한 오류가 발생할 수 있습니다.
  • 변수에 블록 범위 사용: 블록 범위를 활용하고 우발적인 변수 누출을 ​​방지하려면 var보다 let 및 const를 선호합니다.
  • 클로저에서 어휘 범위 지정 활용: 즉각적인 범위 밖의 변수에 대한 액세스를 유지하는 함수를 클로저라고 합니다. 클로저는 모듈식 및 비공개 코드를 생성하는 데 강력합니다.

결론

JavaScript의 범위 및 범위 체인은 코드의 변수 접근성 및 메모리 사용을 제어하는 ​​데 필수적입니다. 어휘 환경의 개념과 함께 전역, 기능 및 블록 범위의 미묘한 차이를 이해함으로써 보다 효과적이고 버그 없는 코드를 작성할 수 있습니다. 이러한 원칙을 사용하여 변수를 현명하게 관리하고 더 깔끔하고 모듈화된 JavaScript 애플리케이션을 만드세요!

위 내용은 JavaScript의 범위 및 범위 체인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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