【发布时间】:2018-05-03 03:40:45
【问题描述】:
在 Chrome 中,console 对象定义了两个似乎做同样事情的方法:
console.log(...)
console.dir(...)
我在网上某处读到dir 在记录对象之前获取了该对象的副本,而log 只是将引用传递给控制台,这意味着当你去检查你记录的对象时,它可能已经改变了。然而,一些初步测试表明没有区别,并且它们都可能会以不同的状态显示对象,而不是记录时。
在 Chrome 控制台中试试这个(Ctrl+Shift+J)看看我的意思:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
现在,展开 log 语句下方的 [Object] 并注意它显示 foo 的值为 2。如果您使用 dir 而不是 log 重复实验,情况也是如此。
我的问题是,为什么console 上存在这两个看似相同的功能?
【问题讨论】:
-
试试
console.log([1,2])和console.dir([1,2]),你会看到不同的。 -
在 firebug 中,使用
console.dir记录的对象的内容不会改变,因此会有很大的不同。 -
小心
console.dir():这个功能是non-standard!所以不要在生产中使用它;) -
@user7393973 不错的发现!实际上,图片来自下面的my answer,所以实际上是在我的笔记本电脑上拍摄的。很高兴回馈 MDN。这是多么棒的资源啊。
标签: javascript google-chrome console