当前位置: 首页 > 面试题库 >

console.dir和console.log有什么区别?

贺自明
2023-03-14
问题内容

在Chrome中,console对象定义了两个似乎做同样事情的方法:

console.log(...)
console.dir(...)

我在某处在线阅读,dir在记录该对象之前先获取了该对象的副本,而log只是将引用传递给控制台,这意味着到您检查记录的对象时,它可能已更改。但是,一些初步测试表明,两者没有什么区别,而且它们都可能以与记录时不同的状态显示对象。

在Chrome控制台(Ctrl+ Shift+ J)中尝试此操作,以了解我的意思:

> o = { foo: 1 }
> console.log(o)
> o.foo = 2

现在,展开[Object]下面的log语句,注意它显示foo的值为2。如果使用dir代替重复实验,则同样如此log

我的问题是,为什么这两个看似相同的功能存在console


问题答案:

在Firefox中,这些功能的行为有很大不同:log仅打印toString表示形式,而dir打印出可导航树。

在Chrome中, 大多数情况下log已经打印出一棵树。但是,Chrome
仍然对某些类别的对象进行字符串化,即使它们具有属性。也许最清楚的例子是正则表达式: __log

> console.log(/foo/);
/foo/

> console.dir(/foo/);
* /foo/
    global: false
    ignoreCase: false
    lastIndex: 0
    ...

您还可以看到与普通对象不同的数组(例如console.dir([1,2,3]))的明显区别log

> console.log([1,2,3])
[1, 2, 3]

> console.dir([1,2,3])
* Array[3]
    0: 1
    1: 2
    2: 3
    length: 3
    * __proto__: Array[0]
        concat: function concat() { [native code] }
        constructor: function Array() { [native code] }
        entries: function entries() { [native code] }
        ...


 类似资料:
  • 在Chrome中,对象定义了两个似乎执行相同操作的方法: 我在网上读到,在记录对象之前获取对象的副本,而只是将引用传递给控制台,这意味着当您去检查您记录的对象时,它可能已经更改了。然而,一些初步的测试表明,它们并没有什么区别,而且它们都有可能显示对象的状态与记录对象时的状态不同。 在Chrome控制台(Ctrl+Shift+J)中尝试此操作,以了解我的意思:

  • 可能的重复: console.dir 和 console.log 有什么区别? 我最近了解到 的存在。 在浏览了MDN之后,我并没有清楚地理解它和< code>console.log之间的真正区别。它们都显示相同的输出(但是< code >。dir显示一些属性),是这样吗? 调试/开发时应该使用哪个函数? 编辑:我刚刚发现了一个回答我想法的现有问题:console.dir和console.log有

  • 本文向大家介绍javascript中console.dir和console.log之间的区别?,包括了javascript中console.dir和console.log之间的区别?的使用技巧和注意事项,需要的朋友参考一下 console方法显示传递给它的任何对象的toString表示形式。 Console方法显示指定JavaScript对象的属性的交互式列表。输出显示为带有显示三角形的层次结构列

  • 问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。

  • 本文向大家介绍<%# %> 和 <% %> 有什么区别?相关面试题,主要包含被问及<%# %> 和 <% %> 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 答:<%# %>表示绑定的数据源 <%%>是服务器端代码块  

  • 问题内容: 以下代码之间有什么区别: 和 Python建议采用一种做事方式,但有时似乎不止一种。 问题答案: 一个是函数调用,一个是文字: 使用第二种形式。它更具Python风格,并且可能更快(因为它不涉及加载和调用单独的函数)。