JavaScript의 범위 체인은 함수가 정의될 때 결정됩니까, 아니면 호출될 때 결정됩니까?
欧阳克
欧阳克 2017-07-05 10:42:15
0
5
1071

다음 폐쇄 문제를 보세요

으아아아

출력값이 20이 아니라 10입니다. x가 값을 가져오면 스코프 체인을 따라 조회되지 않나요? 함수 생성 시 스코프 체인이 결정되면 결과는 10이 됩니다. 함수가 호출되면 20이어야 합니다. 예 범위 체인에 대한 정확한 설명이 없습니까? 여기서 정확한 범위 체인은 어떤 모습이어야 합니까? fn과 show는 동일한 수준에 있습니까, 아니면 fn이 show 내에 있습니까?

欧阳克
欧阳克

温故而知新,可以为师矣。 博客:www.ouyangke.com

모든 응답 (5)
学霸

스코프 체인은 함수가 정의될 때 결정됩니다.

함수 내에 정의된 변수는 함수 외부 어디에서나 액세스할 수 없습니다. 변수는 함수 도메인 내부에서만 정의되기 때문입니다. 따라서함수는 해당 범위 내에 정의된 모든 변수 및 함수에 액세스할 수 있습니다. 즉, 전역 범위에 정의된 함수는 전역 범위에 정의된 모든 변수에 접근할 수 있습니다. 다른 함수 내에 정의된 함수는 상위 함수에 정의된 모든 변수와 상위 함수가 액세스할 수 있는 다른 모든 변수에도 액세스할 수 있습니다.

https://developer.mozilla.org...

    習慣沉默

    스코프 체인은 동적이므로 호출 시 결정됩니다.
    그러나 코드에서 클로저로 정의된 function()은 바인딩의 가장 바깥쪽 범위입니다.
    함수로 선언된 함수는 기본적으로 바인딩의 가장 바깥쪽 범위로 설정됩니다.

    (저도 배우고 있어요...)

      洪涛

      함수가 생성될 때 전역 변수 개체를 포함하는 범위 체인을 생성하고 내부 [[Scope]] 속성에 저장합니다. 함수가 실행되면 [[Scope]] 속성의 개체를 복사하여 실행 환경의 범위 체인이 구축되고 자체 활성 개체가 프런트 엔드로 푸시됩니다. 완전한 기능을 구성하는 범위 체인. [[Scope]]는 값의 복사본이 아닌 전역 변수에 대한 참조를 보유합니다.

      으아악
        阿神

        클로저 호출 방법은 다음과 같은 효과가 있습니다. 아래 예제에서는 함수 정의 시 스코프 체인이 위치와 관련되어 있음을 비교하여 보여줍니다.

        으아악

        관련 질문 링크가 추가되었습니다. /q/10… 범위 체인에 대한 토론이 있습니다.

          扔个三星炸死你

          비엄격 모드에서 모든 IIFE의 이 지점은 창입니다

          위 내용은 정확하지 않습니다. . .

            최신 다운로드
            더>
            웹 효과
            웹사이트 소스 코드
            웹사이트 자료
            프론트엔드 템플릿
            회사 소개 부인 성명 Sitemap
            PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!