当前位置:  开发笔记 > 编程语言 > 正文

Chrome控制台清除分配和变量

如何解决《Chrome控制台清除分配和变量》经验,为你挑选了4个好方法。

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

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

在此输入图像描述

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

在此输入图像描述

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



1> sdgluck..:

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


var,let和const创建无法使用delete运算符删除的不可配置属性.JavaScript删除操作符从对象中删除属性; 如果不再保留对同一属性的引用,则最终会自动释放.

2> pjivers..:

解决此问题的一个简单方法是在快速调用的函数表达式(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


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

3> hkasera..:

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

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

希望有所帮助!



4> Tarandeep Si..:

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

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控制台上测试或尝试操作。我经常使用它。

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有