我正在学习JavaScript并且已经在Chrome控制台中进行了大量测试。即使我清除控制台,或者使用我在其他线程中看到的任何命令(localStorage.clear()
),我指定的任何变量仍会显示。
例如,如果我执行var name = "Bob";
我清除并关闭控制台,重新打开它,然后查找name
的值,它仍然是Bob
。
清除这些内容的最佳方法是什么?
答案 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
已定义。
所以 - 它已经在全球范围内。
如果你对像 hello
这样的变量做同样的事情 - 然后刷新,它会清除内存。
因为 name
已经定义,它会保留。刷新 - 不起作用。
(这真的让我感到困惑 - 但不会 - 如果我为课堂演示选择了几乎任何其他变量!)
答案 10 :(得分:-1)
似乎可以通过鼠标右键上下文菜单清除控制台历史记录。