美文网首页
奇怪的console.log

奇怪的console.log

作者: _半城 | 来源:发表于2021-03-23 11:47 被阅读0次

今天调试的时候遇到一个困惑的问题,

let a = [{age:18}]
console.log(a)
a[0].age = 20

将这段代码复制到chrome控制台运行时,输出结果是 [{age:20}],但是按照执行顺序,结果应该是 [{age:18}]才对。

chrome控制台结果

在node环境下跑了下,结果却是正常的!看来问题出在chrome控制台。

node环境结果

原因分析

  1. js里对象是引用类型,会公用内存。

  2. chrome的console.log不会把复杂对象立即输出,点击展开时才会去内存中读取对象的属性值,此时内存中对象的属性已经被修改了,所以看到的是修改后的值

结论

通过console.log输出基本类型时是可信的,但对于引用类型是不一定的,通过JSON.stringify可以解决。

node环境里,console.log()是同步的,不会有这种问题出现。

相关文章

  • 奇怪的console.log

    今天调试的时候遇到一个困惑的问题, 将这段代码复制到chrome控制台运行时,输出结果是 [{age:20}],但...

  • js装逼指南

    console.log设置style ``` console.log(`%c ┏┓┏┓+ + ┏┛┻━━━...

  • 判断为空,为什么会出问题?

    console.log(!Boolean('')) console.log(!Boolean(' ')) cons...

  • js..3

    声明提前 console.log(a); var a=3; var a; console.log(a); a=...

  • typeof返回哪些数据类型

    console.log(typeof 10); //number console.log(typeof '10')...

  • 倒计时

    // console.log(times.toDateString()); // console.log(time...

  • vscode去注释

    console.log()加了分号 console.log()没加分号

  • .4

    声明提前 console.log(a); var a=3; var a; console.log(a); a=3;...

  • console.log小用法

    console.log("%c content", "css"); eg :console.log("%c ow"...

  • js类型判断

    typeof console.log(typeof('yayu'))//string console.log(ty...

网友评论

      本文标题:奇怪的console.log

      本文链接:https://www.haomeiwen.com/subject/pvsxhktx.html