Chrome控制台清除分配和变量

时间:2015-12-14 15:32:44

标签: javascript google-chrome-devtools

我正在学习JavaScript并且已经在Chrome控制台中进行了大量测试。即使我清除控制台,或者使用我在其他线程中看到的任何命令(localStorage.clear()),我指定的任何变量仍会显示。

例如,如果我执行var name = "Bob";

之类的操作

enter image description here

我清除并关闭控制台,重新打开它,然后查找name的值,它仍然是Bob

enter image description here

清除这些内容的最佳方法是什么?

11 个答案:

答案 0 :(得分:30)

在开发人员控制台中声明任何变量或函数时,您所影响的是全局执行上下文,对于Web浏览器是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

答案 1 :(得分:22)

这个问题的一个简单解决方案是在一个立即调用的函数表达式(IIFE)中包含您不想要的全局范围内的任何代码。当函数结束时,函数范围中分配的所有变量都将被释放:

(function() {

    // Put your code here...

})();

有关IIFE的更多信息: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

答案 2 :(得分:6)

清除控制台并不清除内存中的变量,而只是清除用户界面中的数据。

重新加载页面会清除控制台数据。我希望你应该没问题,因为你提到你只是在测试和学习javascript。

希望有所帮助!

答案 3 :(得分:3)

只需重新加载具有清晰历史记录和执行旧命令的新上下文

Chrome开发工具发生了很多变化。 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控制台上测试或尝试操作。 我经常使用它。

答案 4 :(得分:1)

我认为清除已定义变量的最佳方法是:

window.location.reload();

它将立即自动删除所有声明的变量。

答案 5 :(得分:1)

如果右键单击chrome中的刷新图标(需要打开chrome devtools,请在页面上 F12 / 右键单击-> //ul/li[@class="lemon--li__373c0__1r9wz border-color--default__373c0__3-ifU"]//h4/span/text()[1] ) ,在一两秒钟后,您将可以选择硬重装。硬重装将清除所有存储的变量。

Ctrl + Shift + R (Windows)/ Cmd + Shift + R (Mac)将执行相同操作,而无需打开devtools。

答案 6 :(得分:0)

如果要删除该变量,请

delete name;

答案 7 :(得分:0)

Console.clear()

在您的浏览器控制台中使用此命令并查看魔术, 使用起来非常方便,并且可以按照使用chrome控制台的最佳做法完美运行,

答案 8 :(得分:0)

实际上有一个答案,不确定这是新的还是已经存在了一段时间,但是如果您执行硬刷新(例如,control + shift + r),则控制台值将被完全删除,您可以重新实例化相同的变量和函数等。

答案 9 :(得分:0)

name 已定义。

enter image description here

所以 - 它已经在全球范围内。

如果你对像 hello 这样的变量做同样的事情 - 然后刷新,它会清除内存。

因为 name 已经定义,它会保留。刷新 - 不起作用。

enter image description here

enter image description here

(这真的让我感到困惑 - 但不会 - 如果我为课堂演示选择了几乎任何其他变量!)

答案 10 :(得分:-1)

似乎可以通过鼠标右键上下文菜单清除控制台历史记录。