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 サイトの他の関連記事を参照してください。