ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 関数でローカル スコープの変数をすべて取得するにはどうすればよいですか?

JavaScript 関数でローカル スコープの変数をすべて取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-17 05:16:03348ブラウズ

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

JavaScript でスコープ内のすべての変数にアクセスするにはどうすればよいですか?

一般に認められているように、現時点ではすべての変数を直接取得する方法はありません。 JavaScript のスコープ内変数では、スコープ内のローカル変数にアクセスするための制限されたアプローチが存在します。 function.

これを実現するには、f '' を使用して関数を文字列に変換し、関数のソース コードを生成します。 Esprima などのパーサーを使用して、関数のコードを解析し、ローカル変数宣言を特定します。

具体的には、結果で type フィールドが「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 変数にのみアクセスできるようになります。ネストされた変数にアクセスするには、caller を使用したループを使用できますが、変数名は事前にわかっている必要があります。

以上がJavaScript 関数でローカル スコープの変数をすべて取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。