Chrome控制台清除分配和变量

spe*_*ex5 42 javascript google-chrome-devtools

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

例如,如果我做了类似的事情 localStorage.clear()

在此输入图像描述

我清理并关闭控制台,重新打开它,然后寻找var name = "Bob";它的价值,它仍然存在name.

在此输入图像描述

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

sdg*_*uck 33

在开发人员控制台中声明任何变量或函数时,您所影响的是全局执行上下文,对于Web浏览器而言window.

在您clear()使用控制台时,您告诉Chrome删除这些操作的所有可见历史记录,而不是清除您附加到的对象window.

要执行此操作,您必须delete通过其引用手动操作每个对象:

delete name;
name //=> undefined
Run Code Online (Sandbox Code Playgroud)

如果有通过重复地移动多个对象的开销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
Run Code Online (Sandbox Code Playgroud)

  • 重新加载页面并没有为我清除它。删除姓名;虽然有效。我宁愿有一种方法可以完全清除牌组,而不必删除个别作业。我不确定为什么刷新不起作用。这似乎是一个流行的答案。 (3认同)
  • var,let和const创建无法使用delete运算符删除的不可配置属性.JavaScript删除操作符从对象中删除属性; 如果不再保留对同一属性的引用,则最终会自动释放. (2认同)
  • 现在刷新页面会清除所有变量分配。 (2认同)

pji*_*ers 30

解决此问题的一个简单方法是在快速调用的函数表达式(IIFE)中将您不想要的任何代码包装在全局作用域中.当函数结束时,函数范围中分配的所有变量都将被释放:

(function() {

    // Put your code here...

})();
Run Code Online (Sandbox Code Playgroud)

有关IIFE的更多信息:https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

[更新]

在ES6中,您可以使用块(只要您使用块let代替var):

{

    // Put your code here...

}
Run Code Online (Sandbox Code Playgroud)

有关块的更多信息:http://exploringjs.com/es6/ch_core-features.html#sec_from-iifes-to-blocks

  • 我对您的回答投了赞成票,因为尽管它没有回答问题,但这是一个很不错的解决方案:) (4认同)

hka*_*era 11

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

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

希望有所帮助!


Tar*_*ngh 7

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

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;
Run Code Online (Sandbox Code Playgroud)

但是在控制台仍处于打开状态时会重新加载页面。将刷新控制台上下文,现在x不可用,您可以重新定义它。希望这可以帮助某人在chrome控制台上测试或尝试操作。我经常使用它。