JavaScript 학습 노트(3): JavaScript에도 입문이 있습니다. Main function_javascript 기술
C와 Java에는 프로그램에 대한 진입 함수나 메소드, 즉 메인 함수나 메인 메소드가 있습니다. JavaScript에서는 프로그램이 JS 소스 파일의 헤드부터 실행되기 시작합니다. 그러나 어떤 의미에서는 프로그램의 시작점으로 주요 기능을 구성할 수 있습니다. 이렇게 하면 다른 언어와 통합될 수 있을 뿐만 아니라 JS에 대한 더 깊은 이해를 갖게 될 수도 있습니다.
1. 실제 입장
JavaScript 파일이 실행을 위해 JS 엔진에 넘겨지면 JS 엔진은 모든 코드가 실행될 때까지 각 명령문을 위에서 아래로 하나씩 실행합니다.
2. 스코프 체인, 전역 범위 및 전역 개체
우리는 JS의 모든 함수가 실행될 때 새로운 범위를 생성한다는 것을 알고 있습니다. 구체적으로 말하면, 실행 프로세스가 함수에 들어갈 때 새로운 범위가 생성되고, 함수 실행이 완료되고 종료되면 이 범위가 소멸됩니다. 함수의 형식 매개변수와 지역 변수는 이 범위에 바인딩됩니다. 함수 호출이 범위 소멸을 완료하면 그에 따라 소멸됩니다. 물론, 특별한 경우, 함수가 반환될 때 범위의 일부 변수가 계속 참조되는 경우 범위와 이러한 참조된 변수는 소위 클로저를 형성하여 소멸되지 않습니다.
반면에 함수가 중첩될 수 있으므로 범위도 중첩될 수 있다는 것을 알고 있습니다. 함수가 정의되면 JS 엔진은 각 함수에 대해 외부 함수의 어휘 범위를 가리키는 [[scope]]라는 내장 속성을 설정합니다. 이러한 방식으로 여러 범위가 범위 체인이라는 체인 구조를 형성합니다. 일반적으로 언제든지 하나의 범위 체인만 있습니다. 즉, 실행 함수의 범위에서 시작하여 가장 바깥쪽 전역 범위까지 계층별로 위쪽으로 추적합니다.
[참고]: 범위 체인의 함수는 JS 소스 코드에서 계층별로 중첩된 함수입니다. 이는 함수가 실행되는 순서나 함수 호출 스택과 관련이 없습니다. 어휘 범위라는 이름의 유래.
전역 범위는 함수 범위가 아니지만 모든 함수 범위의 외부 범위이자 모든 범위 체인의 끝점입니다. 따라서 프로그램이 종료되지 않는 한 전역 범위는 항상 존재하며 전역 범위의 변수는 항상 유효합니다.
[함수 3의 범위]-->[함수 2의 범위]-->[함수 3의 범위]-->[전역 범위]
또한 전역 범위에 해당하는 전역 개체가 있습니다. 브라우저에서 전역 개체는 창 개체입니다. 전역 개체는 특수 개체입니다.
전역 범위에 정의된 변수는 전역 개체에 바인딩됩니다.
모든 범위에 정의된 변수는 var 키워드 없이 정의된 경우 전역 개체에 바인딩됩니다.
전역 범위에서 이는 전역 개체를 가리킵니다.
위에 나열된 특성을 보면 전역 범위를 객체로 간주하면 실제로는 전역 객체라는 것을 알 수 있습니다. 또한 이는 다음 네 가지 문이 전역 범위에서 동일한 이유도 설명합니다.
var a = 1; a = 1; window.a = 1; this.a = 1;
3. 가상의 주요 기능
모두 범위인데 왜 특별한 전역 범위가 필요한가요? 우리는 항상 단순성과 일관성을 선호하며 복잡성과 특수성을 피하려고 노력합니다. 그렇다면 당연히 전역 범위를 함수 범위와 동일하게 만들 수 있는지 궁금합니다. 대답은 '예'입니다. 우리는 이렇게 생각할 수 있습니다:
JS 엔진이 소스 파일을 실행할 때 파일의 코드를 main이라는 함수로 래핑한다고 가정합니다. 그런 다음 이 주 함수를 프로그램의 진입점으로 사용하십시오.
즉, JS 파일에 다음과 같은 코드가 있다고 가정해 보겠습니다.
var a = 1; var b = 2; function add(x, y) { var z = x + y; return z; } console.log(add(a, b));
JS 엔진은 프로그램이 실행되기 전에 프로그램을 주요 함수로 래핑합니다.
// 虚构的main函数 function main() { var a = 1; var b = 2; function add(x, y) { var z = x + y; return z; } console.log(add(a, b)); }
그런 다음 다음 기본 함수를 호출하세요.
main._current_scope_ = window; // 将全局作用域(对象)设为window main.call(window) // 将this指向window
4. 의미는 무엇인가요?
(1) JS에도 다른 언어와 일치하는 입력 기능인 main이 있습니다.
(2) 전역 범위의 개념이 생략되거나 전역 범위가 함수 범위가 됩니다.
(3) 위의 main 함수 호출 과정을 통해 전역 범위에서 특수 속성의 출처를 이해할 수 있습니다.
(4) 마지막 요점은 모든 JS 소스 코드를 나중에 이벤트 큐와 이벤트 루프를 위한 길을 닦는 함수로 취급하는 것입니다.
위는 편집자가 소개한 JavaScript 학습 노트(3)입니다. JavaScript에도 입구 Main 기능이 있으니 마음에 드셨으면 좋겠습니다.

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











기사는 JavaScript 라이브러리 작성, 게시 및 유지 관리, 계획, 개발, 테스트, 문서 및 홍보 전략에 중점을 둡니다.

이 기사는 브라우저에서 JavaScript 성능을 최적화하기위한 전략에 대해 설명하고 실행 시간을 줄이고 페이지로드 속도에 미치는 영향을 최소화하는 데 중점을 둡니다.

프론트 엔드 개발시 프론트 엔드 열지대 티켓 인쇄를위한 자주 묻는 질문과 솔루션, 티켓 인쇄는 일반적인 요구 사항입니다. 그러나 많은 개발자들이 구현하고 있습니다 ...

이 기사는 브라우저 개발자 도구를 사용하여 효과적인 JavaScript 디버깅, 중단 점 설정, 콘솔 사용 및 성능 분석에 중점을 둡니다.

기술 및 산업 요구에 따라 Python 및 JavaScript 개발자에 대한 절대 급여는 없습니다. 1. 파이썬은 데이터 과학 및 기계 학습에서 더 많은 비용을 지불 할 수 있습니다. 2. JavaScript는 프론트 엔드 및 풀 스택 개발에 큰 수요가 있으며 급여도 상당합니다. 3. 영향 요인에는 경험, 지리적 위치, 회사 규모 및 특정 기술이 포함됩니다.

이 기사는 소스 맵을 사용하여 원래 코드에 다시 매핑하여 미니어링 된 JavaScript를 디버그하는 방법을 설명합니다. 소스 맵 활성화, 브레이크 포인트 설정 및 Chrome Devtools 및 Webpack과 같은 도구 사용에 대해 설명합니다.

Console.log 출력의 차이의 근본 원인에 대한 심층적 인 논의. 이 기사에서는 Console.log 함수의 출력 결과의 차이점을 코드에서 분석하고 그에 따른 이유를 설명합니다. � ...

동일한 ID로 배열 요소를 JavaScript의 하나의 객체로 병합하는 방법은 무엇입니까? 데이터를 처리 할 때 종종 동일한 ID를 가질 필요가 있습니다 ...
