기본 JavaScript 지식 요약 (9) 범위 및 범위 체인에 대한 자세한 설명
이번에는 기본 JavaScript 지식 요약을 가져왔습니다. 총 11개의 지식 포인트가 있습니다. 기본 JavaScript 지식 요약 (9) 다음은 실제 사례를 살펴보겠습니다.
범위 정교화
[[범위]]: 모든 JavaScript 함수는 객체입니다. 객체에는 우리가 액세스할 수 있는 속성이 있지만 일부는 액세스할 수 없습니다. 이러한 속성은 JavaScript 엔진에서만 액세스할 수 있으며 [[scope]]는 그 중 하나입니다.
[[scope]]는 런타임 컨텍스트 모음을 저장하는 범위(scope)를 나타냅니다.
범위 체인: [[scope]]에 저장된 실행 컨텍스트 개체 모음, 이 모음을 체인이라고 합니다. 범위 체인 링크
런타임 컨텍스트: 함수가 실행되면 실행 컨텍스트라는 내부 개체가 생성됩니다. 실행 컨텍스트는 함수가 실행될 때의 환경을 정의합니다. 따라서 함수가 실행될 때마다 고유하므로 함수를 여러 번 호출하면 함수 실행이 완료되면 여러 실행 컨텍스트가 생성됩니다. 실행 컨텍스트가 파괴되었습니다
변수 찾기: 스코프 체인의 위에서 아래로 검색하세요
function a() { function b(){ var b = 234; } var a = 123; b(); }var glob = 100; a();
먼저 위의 함수를 살펴보겠습니다. 이것은 전체 함수이고 a는 전역 범위에 있고 그 아래에 glob이 있습니다.
1단계: 우선 시스템이 보는 것은 a의 정의여야 합니다. a가 정의되면 [[범위]]가 됩니다. 이 Position 0은 GO를 가리킨다
Activation Object
0은 이 테이블을 가리킨다
a / [[scope]] scope指向scope chain scope chain scope指向这里
this window window (object) document (object) a (function) glob 100 [[scope]]里面有这个全局的执行期上下文,然后a被执行了,a被执行,a产生的这个AO,把自己的AO存到作用域链的最顶端,形成一个新的作用域链,现在的a的[[scope]]和刚才的那个[[scope]]不一样了 a / [[scope]] scope指向scope chain scope chain scope指向这里
this window arguents [] a 123 b (function) Global Object
scope는 스코프 체인scope chain
을 가리킵니다. 스코프는 여기를 가리킵니다
0 이 위치의 0은 자신의 AO를 가리킵니다. 1 이 위치의 1은 2의 AO를 가리킵니다. 이 위치의 0은 GO
Activation Object
this window window (object) document (object) a (function) glob 100
b / [[scope]]
this window arguents [] b 234; Activation Object
Scope destroy
b가 실행되면 자신의 ao를 파괴하고 정의 상태로 돌아가서 다음 실행을 기다린다.
b는 함수 a의 마지막 문장이므로 b가 실행된 후 a도 소멸되고 b의 [[scope]]도 소멸되어 정의 상태로 돌아가 다음 실행을 기다리게 됩니다
this window arguents [] a 123 b (function) Global Object
그래서 외부 함수는
내부 함수기본 JavaScript 지식 요약(6) 함수, 초기 범위(2부)
기본 JavaScript 지식 요약(7) 재귀기본 JavaScript 지식 요약(8)사전 컴파일 실행 과정
위 내용은 기본 JavaScript 지식 요약 (9) 범위 및 범위 체인에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











typedef struct는 C 언어에서 구조 사용을 단순화하기 위해 구조 유형 별칭을 만드는 데 사용됩니다. 구조 별칭을 지정하여 기존 구조에 새 데이터 유형의 별칭을 지정합니다. 향상된 가독성, 코드 재사용 및 유형 확인 등의 이점이 있습니다. 참고: 별칭을 사용하기 전에 구조를 정의해야 합니다. 별칭은 프로그램에서 고유해야 하며 선언된 범위 내에서만 유효해야 합니다.

Java의 변수 예상 값 예외는 변수 초기화, null 값 사용, 지역 변수 범위 파악을 통해 해결할 수 있습니다.

JavaScript 클로저의 장점에는 변수 범위 유지, 모듈식 코드 활성화, 실행 지연 및 이벤트 처리가 포함됩니다. 단점에는 메모리 누수, 복잡성 증가, 성능 오버헤드 및 범위 체인 효과가 포함됩니다.

C++의 #include 전처리기 지시문은 외부 소스 파일의 내용을 현재 소스 파일에 삽입하고 해당 내용을 현재 소스 파일의 해당 위치에 복사합니다. 표준 입출력 함수를 포함하기 위한 #include <iostream>과 같이 코드에 필요한 선언이 포함된 헤더 파일을 포함하는 데 주로 사용됩니다.

C++ 스마트 포인터의 수명 주기: 생성: 스마트 포인터는 메모리가 할당될 때 생성됩니다. 소유권 이전: 이동 작업을 통해 소유권을 이전합니다. 해제: 스마트 포인터가 범위를 벗어나거나 명시적으로 해제되면 메모리가 해제됩니다. 객체 소멸: 가리키는 객체가 소멸되면 스마트 포인터는 유효하지 않은 포인터가 됩니다.

할 수 있다. C++에서는 중첩된 함수 정의 및 호출을 허용합니다. 외부 함수는 내장 함수를 정의할 수 있고 내부 함수는 범위 내에서 직접 호출할 수 있습니다. 중첩된 함수는 캡슐화, 재사용성 및 범위 제어를 향상시킵니다. 그러나 내부 함수는 외부 함수의 로컬 변수에 직접 액세스할 수 없으며 반환 값 유형은 외부 함수 선언과 일치해야 합니다.

Vue에서는 let과 var 사이에 변수를 선언할 때 범위에 차이가 있습니다. 범위: var에는 전역 범위가 있고 let에는 블록 수준 범위가 있습니다. 블록 수준 범위: var는 블록 수준 범위를 생성하지 않으며, 블록 수준 범위를 생성합니다. 재선언: var는 동일한 범위에 있는 변수의 재선언을 허용하지만 let은 허용하지 않습니다.

JavaScript에서 이 포인팅 유형은 다음을 포함합니다: 1. 전역 객체, 2. 함수 호출, 3. 생성자 호출, 5. 화살표 함수(외부 상속). 또한, 바인딩(), call() 및 apply() 메서드를 사용하여 이것이 가리키는 내용을 명시적으로 설정할 수 있습니다.
