私は、Google Chrome Developer Tools。
「Fred」という値を持つ関数のスコープ変数で変数を探しています。関数のスコープ内の変数からこの値を検索するにはどうすればよいですか?
特定の行のChrome DevTools内にブレークポイントを設定できます。これは、上記の変数のスコープ/コンテキスト内にあります。ブラウザーの実行がブレークポイントに到達すると、内のすべての変数/関数にアクセスできます。その、そしてグローバルな範囲。
Chromeのコンソールを利用して、現在のスコープ内でアクセス可能な変数を出力することもできます。 Chrome DevToolsの詳細情報:
開発者ツールではデフォルトで検索が許可されていないため、実際に検索を実行できるように、コンソールにスクリプトを追加する必要があります。これがあなたのための機能です(更新については以下の私の要点コメントを参照してください):
_function scanScope(whatToScan, scanValue) {
for (var key in whatToScan) {
if (whatToScan[key] == scanValue) {
console.log(key + ' = ' + whatToScan[key]);
} else {
if( (typeof whatToScan[key] === "object") && (key !== null) ) {
scanScope(whatToScan[key], scanValue);
}
}
}
}
_
これをコピーしてコンソールに貼り付け、検索するスコープと検索する値を指定して呼び出します。 もちろん、大きすぎるオブジェクトを検索しないように注意してください。たとえば、Angularでプログラミングしていて、「常にドットがある」というルールに従っている場合は、スキャンすることができます次のような呼び出しで:
scanScope($scope.model, 'Fred');
手動でこのようにコンソールで:
_console.log(this);
_
OR
_console.log({set x(){}});
_
これは次と同等です:
_console.log(Object.defineProperty({},'x',{get: function(){}}));
_
コンソールルックアップで:
get x: function (){}
-> _<function scope>
_-> _Global: Window
_