JavaScript의 전역 변수는 실제로 어떻게 작동합니까?
본문
몇 가지 흥미로운 현상이 스크립트의 범위, 소위 전역 개체 등의 역할을 합니다.
원본 : https://2ality.com/2019/07/global-scope.html
Scopes
변수의 어휘 범위 (짧은 : 범위)는 액세스 할 수 있는 프로그램의 영역입니다.
자바 스크립트의 범위는 정적 (런타임에 변경되지 않음)이며 중첩 될 수 있습니다.
function func() { // (A)
const foo = 1;
if (true) { // (B)
const bar = 2;
}
}
if 문 (라인 B)에 의해 도입 된 범위는 함수 func() (라인 A)의 범위 내에서 중첩됩니다.
범위 S의 가장 안쪽에 있는 범위를 S의 외부 범위라고 합니다. 이 예에서 func는 if의 외부 범위입니다.
어휘 환경(Lexical environments)
JavaScript 언어 사양에서 범위는 어휘 환경을 통해 "구현"됩니다. 두 가지 구성 요소로 구성됩니다.
변수 이름을 변수 값에 매핑하는 환경 레코드 (think dictionary). 이것은 JavaScript가 변수를 저장하는 곳입니다.
환경 레코드에 있는 하나의 키 - 값 엔트리를 바인딩이라고 합니다.
외부 환경에 대한 참조 - 현재 환경이 나타내는 범위의 외부 범위를 나타내는 환경입니다.
따라서 중첩 된 범위의 트리는 외부 참조로 연결된 중첩 된 환경의 트리로 표시됩니다.
전역 개체 (The global object)
전역 객체는 속성이 전역 변수 인 객체입니다. (우리는 그것이 환경 트리에 얼마나 정확하게 들어 맞는지 곧 연구 할 것입니다.) 그것은 여러 다른 이름을 가지고 있습니다 :
모든 곳 (제안 된 기능) : globalThis
전역 개체의 다른 이름은 플랫폼 및 언어 구성에 따라 다릅니다.
- 이전글코드를 실제로 사용하는 가장 쉬운 방법입니다. 19.07.14
- 다음글PHP 벤치마킹 프레임 워크. 19.07.14