Четкое назначение консоли и переменные консоли Chrome
Я изучаю JavaScript и много тестирую в консоли Chrome. Даже если я localStorage.clear()
консоль или использую любую из команд, которые я видел в других потоках (localStorage.clear()
), все переменные, которые я назначил, все равно отображаются.
Например, если я сделаю что-то вроде var name = "Bob";
![enter image description here]()
Я очищаю и закрываю консоль, снова открываю ее и ищу значение name
, оно все еще Bob
.
![enter image description here]()
Какой лучший способ очистить это?
Ответы
Ответ 1
То, что вы затрагиваете при объявлении каких-либо переменных или функций в консоли разработчика, - это глобальный контекст выполнения, который для веб-браузеров window
,
Когда вы clear()
, консоль, с которой вы сообщаете Chrome, удаляет всю видимую историю этих операций, не очищает объекты, которые вы подключили до window
.
Для этого вы должны вручную delete
поместить каждый объект по ссылке:
delete name;
name //=> undefined
Если накладные расходы на необходимость многократного удаления нескольких объектов с помощью delete
слишком велики, сохраните каждое значение как свойство объекта, например. data
, который вы можете удалить вместе со всеми свойствами в одном выражении:
var data = {};
data.name = 'Bob';
data.age = 60;
delete data;
data.name //=> ReferenceError: data is not defined
data.age //=> ReferenceError: data is not defined
Ответ 2
Простое решение этой проблемы - заключить любой код, который вам не нужен, в глобальную область видимости в выражение для немедленного вызова функции (IIFE). Все переменные, назначенные в области действия функции, освобождаются после завершения функции:
(function() {
// Put your code here...
})();
Для получения дополнительной информации о IIFEs: https://en.wikipedia.org/wiki/Immediately-invoked_function_expression
[Обновить]
В ES6 вы можете использовать блоки (если вы используете let
вместо var
):
{
// Put your code here...
}
Для получения дополнительной информации о блоках: http://exploringjs.com/es6/ch_core-features.html#sec_from-iifes-to-blocks
Ответ 3
Удаление консоли не освобождает переменные из памяти, а просто очищает данные от пользовательского интерфейса.
Перезагрузка страницы очищает данные консоли. Я надеюсь, что все должно быть хорошо, поскольку вы упомянули, что вы просто тестируете и изучаете javascript.
Надеюсь, что это поможет!
Ответ 4
Просто перезагрузите новый контекст с чистой историей и выполнением старых команд
Ситуация сильно изменилась в инструментах Chrome Dev. delete name
не помогает;
//for example if you have declared a variable
'const x = 2;'
//Now sometime later you want to use the same variable
'const x = 5' you will get an error
//if you try to delete it you will get false
delete x;
Но перезагрузка страницы при открытой консоли. обновит контекст консоли, и теперь символ x недоступен, и вы можете переопределить его. Надеюсь, что это помогает кому-то тестировать или пробовать что-то на консоли Chrome. Я использую это много.
Ответ 5
Если вы хотите удалить эту переменную, то
delete name;
Ответ 6
Console.clear()
Используйте эту команду в консоли браузера и увидите волшебство, очень удобное в использовании и прекрасно работающее в соответствии с лучшими практиками использования консоли Chrome,