console.log()打印对象结果时,结果是异步的。一般对于基本类型number、null、undefined、string、boolean 的输出是可信的。但对于Object等引用类型来说,结果往往不是我们所期望的。
问题描述
- 在某次调试中我一致找不出一个对象属性值改变的位置,顺着逻辑打印了一通结果根本找不到是哪个位置改变了这个对象的属性值
原因分析
- 在打印的位置之后还触发了别的事件改变了该对象的值,而console.log()打印对象结果时,结果是异步的,所以才会一直出现找不到准确的对象属性值改变的位置这种情况。
- 总结:一般对于基本类型number、null、undefined、string、boolean 的输出是可信的。但对于Object等引用类型来说,结果往往是异步的,打印出来的自然很容易不是我们所期望的。
解决方法
- 方法1:使用
JSON.stringnify()
把需要打印的内容转成字符串再打印 - 方法2:使用打断点的方式来调试