如何在Google Chrome开发者工具中搜索范围变量?

时间:2012-07-11 17:54:02

标签: javascript google-chrome-devtools

我使用Google Chrome开发者工具在javascript函数中设置断点。

我在函数的范围变量中寻找值为“Fred”的变量。如何在函数范围内的变量中搜索此值?

3 个答案:

答案 0 :(得分:9)

您需要向控制台添加脚本,以便实际执行搜索,因为默认情况下开发人员工具不允许这样做。以下是适用于您的功能(请参阅下面的我的要点评论以获取更新):

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

答案 1 :(得分:4)

您可以在特定行的Chrome DevTools中设置一个断点,该断点位于所述变量的范围/上下文中。当浏览器执行到达断点时,您将可以访问其中的所有变量/函数以及全局范围。

您还可以使用Chrome控制台并输出当前范围内可访问的任何变量。有关Chrome DevTools的更多信息,请访问:

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

答案 2 :(得分:0)

以这种方式在控制台中手动:

console.log(this);

OR

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

相当于:

console.log(Object.defineProperty({},'x',{get: function(){}}));  
在控制台中查找

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