Chrome控制台清除赋值和变量

76
我正在学习JavaScript,并且在Chrome控制台上进行了很多测试。即使我清除控制台,或使用其他线程中看到的任何命令(localStorage.clear()),我分配的任何变量仍然会显示出来。
例如,如果我执行类似于var name = "Bob";的操作。

enter image description here

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

enter image description here

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

12
清除、关闭和打开控制台不会重新初始化页面上下文。您需要刷新页面。 - madox2
"clear():清除控制台输出区域。" - epascarello
9
只需按F5键即可刷新页面。[不要使用全局的name变量] - Bergi
清除不再必要,Chrome 80/92 允许重新声明词法作用域变量。 - Bergi
在使用Ctrl+enter运行任何脚本之前,按F5或Ctrl+Shif+R清除控制台。这适用于任何JavaScript源。使用任何全局变量或语言版本。 - Chuck
显示剩余2条评论
12个回答

57

解决这个问题的简单方法是将任何不想在全局范围内使用的代码都封装在立即调用的函数表达式(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


8
我投票支持你的答案,因为尽管它没有回答问题,但是这是一个很酷的解决方案 :) - Timbergus
你不应该因为使用Chrome Dev Tools而改变编写JavaScript的方式。你只需要知道如何适当地运行它即可。 - Chuck

48

清除控制台数据最简单的方法是刷新页面

当您在开发者控制台中声明任何变量或函数时,会影响全局执行上下文,对于网页浏览器来说这个全局执行上下文是window对象。

当您通过clear()命令清除控制台时,您告诉Chrome删除所有这些操作的可见历史记录,而不是清除您已在window对象中附加的对象。


4
重新加载页面对我来说并不能清除它。但通过删除姓名可以实现清除。我更希望有一种完全清除任务而不必逐个删除的方法。我不确定为什么刷新不起作用。这似乎是一个常见的答案。 - spex5
你说得对,刷新不起作用 - 我以前从未注意到这种行为。你可以将所有数据附加到一个对象上,例如 data = {}; data.name = 'Bob';。至少那样你只需要做 delete data; - sdgluck
Chrome的控制台似乎非常不一致。如果我使用about:blank页面进行刷新,它似乎会清除变量...但有时不会。总是有效的方法是关闭并重新打开浏览器。好吧,现在足够好了。 - spex5
6
var、let和const创建的属性是不可配置的,不能使用delete运算符删除。JavaScript的delete运算符可以从对象中移除一个属性;如果没有对同一属性的引用,则它最终会被自动释放。 - Vlad Bezden
2
现在刷新页面会清除所有变量赋值。 - Shandy Sulen

22

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

重新加载页面可以清除控制台数据。我希望这对你有所帮助,因为你提到正在测试和学习 JavaScript。

希望能够帮到你!


这可能是最好的答案,而无需逐个删除每个变量。 - carkod
重新加载页面会清除控制台数据。我找不到提到这种行为的文档。你是怎么知道的? - Qiulang

15

重新加载以获取清除历史和执行旧命令的新上下文

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不可用,您可以重新定义它。


2

实际上,这个问题是有解决办法的。如果你进行硬刷新,即按下 control + shift + r,那么控制台中的值就会完全清除,你就可以重新实例化相同的变量和函数等。


1
这将是正确的 - 对于任何尚未初始化的变量。 - sheriffderek

2
如果您在Chrome中右键单击刷新图标(需要打开Chrome DevTools,F12/右键单击页面 -> 检查),一两秒后,您将获得硬刷新的选项。硬刷新将清除所有存储的变量。
在Windows操作系统上按下Ctrl+Shift+R / 在Mac操作系统上按下Cmd+Shift+R将执行相同的操作,但不会打开DevTools。

1
如果你想要移除那个变量,那么:
delete name;

1
var、let和const创建不可配置的属性,不能使用delete运算符删除。JavaScript的delete运算符从对象中删除属性;如果没有对同一属性的更多引用,则最终会自动释放。 - Akshay Vijay Jain

1

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

window.location.reload();

它会自动一次性删除所有已声明的变量。

你不需要编写任何特殊代码来在浏览器控制台上运行JavaScript。你只需要了解如何使用提供的开发工具即可。 - Chuck

0

name 已经被定义。

enter image description here

所以 - 它已经在全局空间中了。

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

因为 name 已经定义了,它将保留。刷新 - 无效。

enter image description here

enter image description here

(这真的让我很困惑 - 但如果我为我的类演示选择了几乎任何其他变量,就不会有这种情况!)


-1

看起来控制台历史记录可以通过右键上下文菜单清除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接