在Chrome浏览器中console
对象定义了两个方法,似乎做同样的事情:console.dir和console.log有什么区别?
console.log(...)
console.dir(...)
我听说网上说dir
拍摄对象的副本记录之前,而log
只是传递的参考控制台,这意味着当你去检查你记录的对象时,它可能已经改变了。然而,一些初步测试表明,没有任何区别,并且它们都有可能在不同状态下显示对象,而不是在它们被记录时。
在Chrome控制台试试这个(按Ctrl + 移 + Ĵ),看看我的意思是:
> o = { foo: 1 }
> console.log(o)
> o.foo = 2
现在,展开[Object]
日志语句下面,请注意,显示foo
,值为2.如果使用dir
而不是log
重复实验,情况也是如此。
我的问题是,为什么这两个看似相同的函数存在于console
?
尝试'console.log([1,2])'和'console.dir([1,2])',你会看到区别。 – 2012-08-14 14:25:02
在firebug中,用'console.dir'记录的对象内容不会改变,所以它有很大的不同。 – 2013-07-26 09:53:16
请小心'console.dir()':此功能是[非标准](https://developer.mozilla.org/docs/Web/API/Console/dir)!因此,请勿将其用于生产;) – fred727 2015-09-10 07:33:35