JavaScript调试之console.log调试的一个小技巧分享


Posted in Javascript onAugust 07, 2017

前言

对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断JavaScript程序的执行,从而造成副作用;

alert弹出框需要点击确认比较麻烦,而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑。

最重要的是alert只能输出字符串,不能输出对象里面的结构,console.log()可以接受任何字符串、数字和JavaScript对象,可以看到清楚的对象属性结构,在ajax返回json数组对象时调试很方便。

//兼容Firefox/IE/Opera使用console.log
if(!window.console){
window.console = {log : function(){}};
}
window.console = window.console || {}; 
console.log || (console.log = opera.postError);

下面分享两张打印出来的信息图片:

JavaScript调试之console.log调试的一个小技巧分享

上面简单的介绍了console.log调试,下面本文将给大家分享一个JavaScript中console.log调试的小技巧,话不多说,来一起看看详细的介绍:

console出正确的值

我们直接来看这一段代码

var obj = {
 name: '小傻子',
 age: 12
}
console.log(obj)
obj.name = '大傻子'

很明显我在第四行的位置添加了console是想查看obj在第四行的时候的值。

但是结果并不如意会打印出

{name: "大傻子", age: 12}

究其原因,是因为obj为引用型变量,console后面的操作同样会影响到console的内容。

我们看一下这一段代码

var obj = {
 name: '小傻子',
 age: 12
}
console.log(obj.name)
obj.name = '大傻子'

这个时候打印的结果就是预期的小傻子

解决方案

我们不可能去打印obj的所有属性,因为这是不现实的。我们还是希望打印obj但是得到在当前位置的结果,我下面贴出自己的解决方案

console.log(JSON.parse(JSON.stringify(obj)))

通过JSON的方法进行深拷贝是我知道的最简单有效的方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript 异步调用框架 (Part 5 - 链式实现)
Aug 04 Javascript
jquery的map与get方法详解
Nov 04 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
May 11 Javascript
动态读取JSON解析键值对的方法
Jun 03 Javascript
微信小程序 图片上传实例详解
May 05 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
May 24 Javascript
Vue计算属性的使用
Aug 04 Javascript
webpack项目轻松混用css module的方法
Jun 12 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
Aug 06 Javascript
微信小程序如何刷新当前界面的实现方法
Jun 07 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 Javascript
JavaScript中跨域问题的深入理解
Mar 04 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 #Javascript
jquery+css实现简单的图片轮播效果
Aug 07 #jQuery
bootstrap table表格客户端分页实例
Aug 07 #Javascript
基于JS递归函数细化认识及实用实例(推荐)
Aug 07 #Javascript
react native实现往服务器上传网络图片的实例
Aug 07 #Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 #Javascript
ES6新增的math,Number方法
Aug 06 #Javascript
You might like
phpmyadmin的#1251问题
2006/11/25 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
php常用的url处理函数总结
2014/11/19 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JS表的模拟方法
2015/02/05 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
解决js图片加载时出现404的问题
2020/11/30 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
Vue computed计算属性的使用方法
2017/07/14 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
在Python的Django框架中创建语言文件
2015/07/27 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
佳能德国网上商店:Canon德国
2017/03/18 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
男方父母证婚词
2014/01/12 职场文书
班长竞选演讲稿
2014/04/24 职场文书
派出所所长先进事迹
2014/05/19 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
初中班长竞选稿
2015/11/20 职场文书
请假条应该怎么写?
2019/06/24 职场文书
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
CSS的calc函数用法小结
2022/06/25 HTML / CSS