版权声明:本文为 Codeagles 原创文章,可以随意转载,但必须在明确位置注明出处!!!


####背景 之前一直没接触过前端,现在工作接触了好多前端代码,身为前端小白的我,调试的时候还在用alert(obj),但是当括号里面试obj类型的时候,弹出框只能判断这个方法在这个位置是否执行,并不能得出obj对象的内容,尴尬中。。。此时我去找到了我肥而不腻的猪哥*@没关系是猪哥啊*,他教会我用console.log()打印对象,然后在chrome的开发者模式中调试能看到结果,我感觉如获一宝,接下来的几天疯狂的使用这个东西,结果问题来了。。。。猪哥告诉我这有个坑,然后有了接下来的讨论。。。(测试只在chrome中,其他浏览器没有测试,如果有测试的伙伴,可以留言使用的浏览器和处理结果,让大家都共享一下)


####问题 接下来看一段网上的代码,实际测试发现是一样的。

发现问题了吧,第一个a应该是空的,第二个才是打印结果,但是第一个就已经有值了,讨论了很长时间又做了下面的测试。 接下来看一下数组形式,发现依旧如此,通过其他资料发现也有人遇到过这种情况。然后又让猪哥帮我做了最后一个测试,我说不用json对象、数组这类的,直接把a让它成为一个整型的数据在测试一遍,有了如下结果: 这就说明问题了,当是数组和对象的时候,console是不准的,而是整型这类的基本数据类型是准确的,由此结果推断,chrome会记录对象的引用,从而log出来的对象引用应该是都是最新的,那么意味着console.log只是对不可变类型是有效的,而对于引用类型如果连续打印可能不是当时的结果 ####开始填坑 只能挖坑,不能填坑,那才是真坑。。这个问题也有很多资料可以解决了,不过还是要测试一下。这样结果就是准确的,console.log(JSON.parse(JSON.stringify(obj)));加上这句话就可以完美的躲避了。

  • JSON.stringify 假如obj是个json对象,则用该方法从obj中解析出一个字符串
  • JSON.parse 很明显就是将字符串转换成json对象才打印,这样即可。

最后,感谢我肥而不腻的猪哥告诉我这个坑,还提供所有的测试素材。

前端console log之坑。。。相关推荐

  1. [JavaScript] 多数前端工程师都没注意到的一个关于console.log()的坑

    [JavaScript] 多数前端工程师都没注意到的一个关于console.log()的坑 请阅读以下代码并猜测结果: function test() {let obj = {}, arr=[]for ...

  2. 终于找到你!如何将前端console.log的日志保存成文件?

    本篇文章来自一个需求,前端websocket会收到各种消息,但是调试的时候,我希望把websoekt推送过来的消息都保存到一个文件里,如果出问题的时候,我可以把这些消息的日志文件提交给后端开发区分析错 ...

  3. 渡一教育_Java每日一练:建立Statement的作用是什么、前端Console.log( Boolean(‘‘))输出的是什么、如果希望1监听TCP端口为9000,服务端应该怎样创建socket

    系列文章目录 文章目录 系列文章目录 题目1java部分建立Statement的作用是什么(答案在最后公布) 题目1 - 答案 ==解析== ==答案== 题目2 前端 js部分 ==答案== 题目3 ...

  4. 前端console.log打印内容与后端请求返回数据不一致

    下面是请求接口返回的数据: 目的是为了获取list列表 然后前端打印的时候出现问题,list列表始终为空. 这是修改正确之后的,数据已正常显示. 修改如下: var obj = JSON.parse( ...

  5. 前端重写console.log方法

    我们在开发前端的时候,有时候希望在开发和测试过程中,可以输出console.log日志,方便查看,但是在生产环境不需要再console.log的,于是想到重写console.log方法,以下有两种效果 ...

  6. vConsole:针对手机网页的前端开发者调试面板,手机web页面console.log 功能,如 Chrome devtools 上一样。

    vConsole:针对手机网页的前端开发者调试面板,移动短端console.log 功能,如devtools 上一样. 我们在开发手机版网页的时候,常常会出现下面的情景:开发时,在自己电脑上运行得好好 ...

  7. 前端:一键清除项目中无用的console.log代码

    关注并将「趣谈前端」设为星标 每天定时分享技术干货/优秀开源/技术思维 前言 说起console.log调试,不用多说,那是非常的好用,开发中帮助我们解决了不少Bug.我们经常能在开发环境中看见这一坨 ...

  8. 【前端】你打console.log要花几秒?

    最近发现了一个新的快捷输入console.log的方式 clog + 回车 有点像Java里的sout快捷变成 System.out.println 其实也就是代码块,现在基本上所有代码编辑器都支持. ...

  9. 你不知道的console.log

    前言 对于前端开发者,使用console.log() 次数绝对很多,但是大部分人认识的 console 对象还不是很全面,其实深入了解这些后,你会发现给开发过程带来很多便利,而且还很有趣. 先来看看别 ...

最新文章

  1. 数据分析工具Pandas(3):Pandas的对齐运算
  2. 开源中国 Maven 库
  3. IplImage和Mat间的相互转换
  4. 从权限管理看互联网产品的盈利方式
  5. [OS复习]设备管理1
  6. 总结:华科教授给本校2013级计算机学院硕士生论文提的几点意见
  7. Java中对象的三种状态
  8. python与matlab比较_python和matlab如何选择?
  9. 传统行业生意,现在想要发财
  10. C#Winform频繁刷新导致界面闪烁解决方法
  11. jsoup解析百度音乐
  12. PLC也能制作小游戏----Codesys编写猜数字小游戏
  13. Arduino笔记四电子指南针罗盘HMC5883L
  14. Wi-Fi放大器、中继、桥接和mesh组网的理解
  15. 信号完整性基础01:从频域出发理解信号(1)-时域和频域
  16. 6月刊精彩文章推荐:圆桌共话数据库
  17. XyplayerX4.0 影视解析源码+解析接口+安装步骤
  18. 网易云音乐app用户个人中心(对比QQ音乐)
  19. python贪吃蛇控制台_通过 PRA 的 python-pygame 玩转贪吃蛇
  20. cruisecontrol 配置

热门文章

  1. ES6新特性(函数默认参数,箭头函数)
  2. 使用Nginx为Leanote配置Https
  3. Goods:注册页面保存User功能发送邮件以及激活功实现
  4. 使用十六进制色值表示UIColor
  5. Quartz.NET基础知识概述
  6. 从opensuse 12.3 升级到 opensuse13.1体验
  7. Niagara 泵阀
  8. PHP 命名空间(namespace)
  9. 《Android应用开发入门经典(第3版)》——第6.1节创建演示应用
  10. 分析分布式服务框架理论介绍