>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수에서 모든 로컬 범위 변수를 검색하려면 어떻게 해야 합니까?

JavaScript 함수에서 모든 로컬 범위 변수를 검색하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-17 05:16:03431검색

How Can I Retrieve All Locally Scoped Variables in a JavaScript Function?

JavaScript에서 범위 내 모든 변수에 어떻게 액세스할 수 있나요?

현재 모든 변수를 검색할 수 있는 직접적인 방법은 없다는 것이 일반적으로 인정되지만 JavaScript의 범위 내 변수에는 함수 내의 지역 변수에 액세스하기 위한 제한된 접근 방식이 있습니다.

f ''를 사용하여 함수를 문자열로 변환하면 함수의 소스 코드가 생성됩니다. Esprima와 같은 파서의 도움으로 함수의 코드를 구문 분석하고 지역 변수 선언을 식별합니다.

구체적으로 결과에서 유형 필드가 "VariableDeclaration"으로 설정된 개체를 찾습니다. 예를 들어 f:

var f = function() {
    var x = 0;
};

함수에서 Esprima를 사용하여 함수 코드를 구문 분석하면 다음이 반환됩니다.

{
    "type": "Program",
    "body": [
        {
            "type": "VariableDeclaration",
            "declarations": [
                {
                    "type": "VariableDeclarator",
                    "id": {
                        "type": "Identifier",
                        "name": "x"
                    },
                    "init": {
                        "type": "Literal",
                        "value": 0,
                        "raw": "0"
                    }
                }
            ],
            "kind": "var"
        }
    ]
}

이 메서드는 함수 자체 내에 정의된 변수에 대한 액세스만 제공합니다. 예를 들어 다음 함수에서는

var g = function() {
    var y = 0;
    var f = function() {
        var x = 0;
    };
};

동일한 접근 방식을 적용하면 y가 아닌 x 변수에만 액세스할 수 있습니다. 중첩된 변수에 접근하려면 호출자를 사용하는 루프를 사용할 수 있지만 변수 이름을 미리 알고 있어야 합니다.

위 내용은 JavaScript 함수에서 모든 로컬 범위 변수를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.