24

GoogleChromeデベロッパーツールを使用してJavaScript関数にブレークポイントを設定しました。

関数のスコープ変数で値が「Fred」の変数を探しています。関数のスコープ内の変数からこの値を検索するにはどうすればよいですか?

4

3 に答える 3

12

開発ツールではデフォルトで検索が許可されていないため、実際に検索を実行できるように、コンソールにスクリプトを追加する必要があります。これがあなたのためのその機能です(更新については以下の私の要点コメントを参照してください):

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');

于 2015-04-10T16:14:12.503 に答える
0

Chrome DevTools内の特定の行にブレークポイントを設定したので、それはその変数のスコープ/コンテキスト内にあります。ブラウザの実行がブレークポイントに達すると、そのスコープ内のすべての変数/関数、およびグローバルスコープにアクセスできるようになります。

[コンソール]タブに移動して入力を開始すると、コンソールはスコープ内の変数をオートコンプリートします。

Chrome DevToolsの詳細については、次のWebサイトをご覧ください。

https://developers.google.com/chrome-developer-tools/

于 2012-07-11T17:57:22.157 に答える
-2

この方法でコンソールに手動で:

console.log(this);

また

console.log({set x(){}});

これは次と同等です:

console.log(Object.defineProperty({},'x',{get: function(){}}));  

コンソールで検索:

get x: function (){}-> <function scope>->Global: Window

于 2014-04-19T14:07:20.700 に答える