【问题标题】:Chrome console clear assignment and variablesChrome 控制台清除分配和变量
【发布时间】:2016-03-20 03:47:16
【问题描述】:

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

例如,如果我执行 var name = "Bob"; 之类的操作

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

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

【问题讨论】:

  • 清除、关闭和打开控制台不会重新初始化页面上下文。你必须刷新页面
  • 只需按 F5 即可刷新页面。 And don't use a global name variable.
  • 按预期工作。
  • 这把我吓坏了。我发誓刷新页面——尤其是硬刷新会清除全局范围。有什么改变吗?我检查了 about:blank 以及其他一些网页。好的.. 所以 - ...是时候回答了。

标签: javascript google-chrome-devtools


【解决方案1】:

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

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

希望有帮助!

【讨论】:

  • 这可能是最好的答案了,不用一一删除每个变量。
  • "重新加载页面会清除控制台数据。"我找不到提到此行为的文档。你怎么知道的?
【解决方案2】:

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

在开发者控制台中声明任何变量或函数时,您所影响的是全局执行上下文,对于网络浏览器来说,它是window

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

【讨论】:

  • 重新加载页面并没有为我清除它。删除名称;虽然有效。我宁愿有一种方法可以完全清除牌组,而不必删除个别作业。我不确定为什么刷新不起作用。这似乎是一个流行的答案。
  • 你说得对,刷新不起作用——我以前从未注意到这种行为。您可以将所有数据附加到一个对象,例如data = {}; data.name = 'Bob';。至少那时你只需要delete data;
  • Chrome 的控制台好像很不一致。如果我使用 about:blank 页面刷新,它似乎清除了变量.. 但有时不会。似乎总是有效的是关闭并重新打开浏览器。那好吧。现在已经足够了。
  • var、let 和 const 创建无法使用 delete 运算符删除的不可配置属性。 JavaScript 删除操作符从对象中删除一个属性;如果不再持有对同一属性的引用,它最终会自动释放。
  • 现在刷新页面会清除所有变量分配。
【解决方案3】:

如果你想删除那个变量,那么

delete name;

【讨论】:

  • 复制自上述 Vlad 的评论 --> var、let 和 const 创建无法使用 delete 运算符删除的不可配置属性。 JavaScript 删除操作符从对象中删除一个属性;如果不再持有对同一属性的引用,它最终会自动释放。
【解决方案4】:

此问题的一个简单解决方案是将您不希望在全局范围内的任何代码包装在立即调用的函数表达式 (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

【讨论】:

  • 我投票赞成你的答案,因为尽管它没有回答问题,但它是一个很酷的解决方案:)
【解决方案5】:

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

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

【讨论】:

    【解决方案6】:
    Console.clear()
    

    在你的浏览器控制台中使用这个命令,看看它的神奇之处, 根据使用 chrome 控制台的最佳实践,使用起来非常方便,并且可以完美运行,

    【讨论】:

    • 您能否为这段代码的作用添加参考?链接到文档等。
    • @Cray 我们的一位同事提供了很好的说明,link
    • chrome 中没有 Console 对象。 Firefox 上有一个console.clear(),但这只是为了清除上面提到的可见历史记录。
    【解决方案7】:

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

    window.location.reload();

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

    【讨论】:

      【解决方案8】:

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

      【讨论】:

      • 这是正确的 - 对于任何尚未初始化的变量。
      【解决方案9】:

      如果在chrome中右键刷新图标(chrome devtools需要打开,F12/页面右键->Inspect),之后一两秒钟,您将可以选择硬重新加载。 Hard Reload 将清除所有存储的变量。

      Ctrl+Shift+R (Windows) / Cmd+Shift +R (Mac) 将在不打开开发工具的情况下执行相同的操作。

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

          name 已定义。

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

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

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

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

          【讨论】:

            猜你喜欢
            • 2013-01-27
            • 2019-07-23
            • 2011-03-01
            • 2012-11-12
            • 1970-01-01
            • 1970-01-01
            • 2015-11-21
            • 2020-07-02
            • 2019-10-29
            相关资源
            最近更新 更多