Как искать переменные области видимости в инструментах разработчика 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.