Как искать переменные области видимости в инструментах разработчика Google Chrome?

Я установил точку останова в функции javascript с помощью инструментов разработчика Google Chrome.

Я ищу переменную в переменных области действия со значением "Fred". Как найти это значение среди переменных в пределах области действия?

Ответ 1

Вы можете установить контрольную точку в Chrome DevTools на определенной строке, которая находится в пределах области/контекста указанной переменной. Когда выполнение браузера достигает точки останова, у вас будет доступ ко всем переменным/функциям внутри своей и глобальной области.

Вы также можете использовать консоль Chrome и выводить любую переменную, доступную в текущей области. Для получения дополнительной информации о Chrome DevTools посетите:

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

Ответ 2

Вам нужно будет добавить script в консоль, чтобы вы могли фактически выполнить поиск, поскольку инструменты разработчика по умолчанию этого не допускают. Вот эта функция для вас (См. Мой комментарий Gist ниже для обновления):

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

Ответ 3

вручную в консоли следующим образом:

console.log(this);

ИЛИ

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

что эквивалентно:

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

в консоли:

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

Ответ 4

Я действительно раздражен хромом за это. Я хотел бы, чтобы это было лучше. Я потратил около 2 часов на поиски этой функциональности, а ее просто нет, когда она должна быть. Я готов снова загрузить разработчика Firefox.