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继承方式实例
Oct 29 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
Jun 29 Javascript
js图片预加载示例
Apr 30 Javascript
jquery操作checkbox实现全选和取消全选
May 02 Javascript
jQuery中hasClass()方法用法实例
Jan 06 Javascript
jquery validate demo 基础
Oct 29 Javascript
IScroll5 中文API参数说明和调用方法
May 21 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
js中的 || 与 && 运算符详解
May 24 Javascript
js简单的分页器插件代码实例
Sep 11 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 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
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
使用 php4 加速 web 传输
2006/10/09 PHP
如何使用FireFox插件FirePHP调试PHP
2013/07/23 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
JS检测图片大小的实例
2013/08/21 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
实例讲解jQuery中对事件的命名空间的运用
2016/05/24 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
微信小程序onShareTimeline()实现分享朋友圈
2021/01/07 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
python爬取拉勾网职位数据的方法
2018/01/24 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
python 安装impala包步骤
2020/03/28 Python
Python类型转换的魔术方法详解
2020/12/23 Python
大学生就业自荐信
2013/10/26 职场文书
十岁生日答谢词
2015/01/05 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS