Подтвердить что ты не робот

Четкое назначение консоли и переменные консоли Chrome

Я изучаю JavaScript и много тестирую в консоли Chrome. Даже если я localStorage.clear() консоль или использую любую из команд, которые я видел в других потоках (localStorage.clear()), все переменные, которые я назначил, все равно отображаются.

Например, если я сделаю что-то вроде var name = "Bob";

enter image description here

Я очищаю и закрываю консоль, снова открываю ее и ищу значение name, оно все еще Bob.

enter image description here

Какой лучший способ очистить это?

4b9b3361

Ответ 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,