Javascript 谷歌chromes控制台为何延迟?

Javascript 谷歌chromes控制台为何延迟?,javascript,jquery,google-chrome,Javascript,Jquery,Google Chrome,可能重复: 基本上,我发现google chrome的开发工具存在问题 以这个片段为例: console.log($(this).find(' .buttons .cancel')); $(this).find(' .buttons .cancel').remove(); 触发该代码段时,如果有两个项目与这些选择器匹配,则google chrome输出[,]。基本上,它是在查找元素,但它在显示数据时似乎比它应该的速度慢 我希望能够记录我正在删除的项目,但就目前情况而言,我必须先运行它,而不使

可能重复:

基本上,我发现google chrome的开发工具存在问题

以这个片段为例:

console.log($(this).find(' .buttons .cancel'));
$(this).find(' .buttons .cancel').remove();
触发该代码段时,如果有两个项目与这些选择器匹配,则google chrome输出
[,]
。基本上,它是在查找元素,但它在显示数据时似乎比它应该的速度慢


我希望能够记录我正在删除的项目,但就目前情况而言,我必须先运行它,而不使用
.remove()
行。然后,在我知道它正在工作后,我可以使用
remove()
函数再次运行它。

考虑以下测试:

  • a={a:'a'}
    。它返回一个对象
  • a.a='b'
  • 展开第一个命令的返回。它显示
    a:“b”
因此,对象总是以第一次在Chrome开发者控制台中打开时的状态显示。对于(伪)数组,重要的是控制台访问对象时对象的状态。这可能是在正常javascript返回之后(很难说为什么,可能是性能原因)

您可以通过始终记录不变的元素来处理此问题,例如:

  • 基本值:
    console.log(“hello”)
  • DOM节点或jQuery对象的克隆:
    console.log($(this).find(“.buttons.cancel”).clone())

如果记录不可变对象不是一个选项,您仍然可以在跟踪代码时记录:
console.log(document);调试器

如果您将一个对象传递到Google Chrome的
控制台.log()
中,该对象不是字符串或数字之类的基本值,它不会立即输出该对象的内容。可能是由于某些进程间通信,从对象实际获取数据并输出到控制台时会有一些延迟。如果您立即修改同一个对象,这将/可能会导致问题,因为您不一定会在控制台中显示正确的内容

一种解决方法是只将完成的字符串传递给
console.log()
。由于字符串是不可变的,它们永远不会被任何其他内容更改,因此您不会被
console.log()
欺骗

在本例中,您将在下一行代码中删除DOM元素。由于Chrome的计时奇怪,这会在
console.log()
能够真正看到并输出DOM元素之前删除DOM元素。您可以这样做,立即生成显示的字符串,并将该字符串传递到
console.log()


犯错误为什么要进行离题投票?这与编程有关,不是吗?我想知道我是否做错了什么,或者如果这是一个bug,现在是否可以做些什么来让控制台正常工作:/n您可以在记录对象之前克隆它。这样,它就不会拾取任何更改。@DanD。当然可以,但实际上是在
console.log($(this.find('.buttons.cancel'))中之后没有任何东西可以更改记录的对象。这两个答案都很好,但是
调试器得+1分提示。
console.log($(this).find(' .buttons .cancel').toString());