广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Console高级用法总结
  • 249
分享到

Console高级用法总结

VueConsole用法Console用法 2023-05-18 05:05:51 249人浏览 泡泡鱼
摘要

目录00 延伸科普01 不同级别的基础信息打印02 列表型的数据打印成表格2.1 打印单一数据类型2.2 打印复合的参数类型2.3 控制显示的列03 打印某个操作的时长04 给打印编

00 延伸科普

Console 对象所提供的 console.*(...) 这样的方法,其实是宿主环境(比如:浏览器、nodejs 等)提供的用于控制台调试的,它并不是 javascript 正式语法的一部分。

它本质上是一个 I/O 操作,但是又不是简单意义上的宏任务,宿主环境的区别会导致 console.*(...) 方法有一定细微的差别,在某些条件下,某些浏览器并不会把传入的内容立即输出。至于到底什么时候控制台 I/O 会延迟,这是一个不确定的问题。

所以调试时,不要盲目相信 console 的输出,特别是打印引用类型时。比如以下代码:

const obj = { a: 1 }
console.log(obj)
obj.b = 2

输出如下:

看着好像没问题,但是这里的 {a: 1},其实是 obj 对象的快照。把它展开,就会发现问题所在,在打印 obj 的那一刻,理应不存在属性 b

如果非要用 console.*(...) 方法做一些细致的调试,可以在打印引用对象或数组时进行序列化+反序列化,防止疑问产生:

const obj = { a: 1 }
console.log(JSON.parse(jsON.stringify(obj)))
obj.b = 2

01 不同级别的基础信息打印

// 打印内容的通用方法
console.log('普通信息')
// 打印一条资讯类说明信息
console.info('资讯类说明信息')
// 打印一条警告信息
console.warn('警告信息')
// 打印一条错误信息
console.error('错误信息')
// 打印一条 debug 级别的消息。控制台配置为显示调试输出时才显示该消息
console.debug('调试信息')

不同级别的信息在控制台会被标记为不同的颜色,其中 log 和 info 表现相同。

02 列表型的数据打印成表格

console.table() 可以将列表型的数据打印成表格,这里的列表型数据指的是数组或者对象。

表格的第一列是 index。如果数据 data 是一个数组,那么这一列的单元格的值就是数组的索引。如果数据是一个对象,那么它们的值就是各对象的属性名称。

语法:

console.table(data [, columns])
  • data 必须,且必须是一个数组或者是一个对象
  • columns 可选,需要显示的列的名称的数组。如果没有 columns 参数,则会打印所有列。

点击每列的顶部标签,可以让表格排序

2.1 打印单一数据类型

console.table(['哈哈', '嘿嘿', '嘻嘻'])

  • 打印一个属性值是字符串的对象
function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

const me = new Person('小错', '王')

console.table(me)

2.2 打印复合的参数类型

如果需要打印的元素在一个数组中,或者需要打印的属性在一个对象,并且他们本身就是一个数组或者对象,则将会把这个元素显示在同一行,每个元素占一列。

  • 打印一个二元数组
const people = [  ['张三', '李四'],
  ['张龙', '赵虎'],
  ['王二', '麻子']
]
console.table(people)

  • 打印一个包含对象的数组
function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

const zhangsan = new Person('三', '张')
const lisi = new Person('四', '李')
const wanger = new Person('二', '王')

console.table([zhangsan, lisi, wanger])

如果数组包含对象,则列标签是对象的属性名。

  • 打印一个属性名是对象的对象
function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

const family = {}

family.mother = new Person('羊', '刘')
family.father = new Person('龙', '张')
family.daughter = new Person('三', '张')

console.table(family)

如果对象的属性为对象,打印出来的 index 是外层对象的属性名。

2.3 控制显示的列

function Person(firstName, lastName) {
  this.firstName = firstName
  this.lastName = lastName
}

const liuyang = new Person('羊', '刘')
const zhanglong = new Person('龙', '张')
const zhangsan = new Person('三', '张')

const family = {}
family.mother = liuyang
family.father = zhanglong
family.daughter = zhangsan

console.table([liuyang, zhanglong, zhangsan], ['firstName'])
console.table(family, ['lastName'])

03 打印某个操作的时长

可以通过 console.time 启动一个计时器来跟踪某一个操作的占用时长。

语法:

console.time(timerName)
  • timerName 每一个计时器必须填写的唯一的名字

通过 console.timeEnd 结束特定的计时器,并打印其从开始到结束所用的毫秒时间。

语法:

console.timeLog(timerName)

示例:

console.time('answer time')
alert('点击继续')
console.timeLog('answer time')
alert('做一堆其他的事情......')
console.timeEnd('answer time')

04 给打印编组

可以使用嵌套组来把一组关联的打印合并。用 console.group() 可以创建新的嵌套块,用 console.groupCollapsed() 创建默认折叠的块。嵌套组需要通过  console.groupEnd() 闭合。

示例:

// 为了方便观察,我用缩进表示了层级
console.log('A1')
console.group()
  console.log('B1')
  console.info('B2')
  console.group()
    console.warn('C1')
    console.warn('C2')
    console.groupCollapsed()
      console.error('D1')
      console.error('D2')
    console.groupEnd()
    console.warn('C3')
  console.groupEnd()
  console.debug('B3')
  console.info('B4')
console.groupEnd()
console.debug('A2')

05 堆栈跟踪

通过 console.trace 可以追踪函数的调用路径。这么说起来很抽象,简单来讲就是,把 console.trace() 放在一个方法中,一旦 console.trace() 被调用了,那么就会输出从一开始到 console.trace() 的所有方法的执行路径。

通过例子或许能很好的理解。

5.1 示例一:

function outer() {
  function inner() {
    console.trace()
  }
  inner()
}

outer()

由于是堆栈信息,所以得倒着看,执行到 console.trace() 的时候,是调用了 outer 和 inner 这两个方法。

5.2 示例二:

function add(a, b) {
  console.trace()
  return a + b
}
function add1(a, b) {
  return add(a, b)
}
function add2(a, b) {
  return add1(a, b)
}
function add3(a, b) {
  return add2(a, b)
}

const result = add3(1, 1)

同理,执行到 console.trace() 的时候,是调用了 add1add2add3add 这四个方法。

console.trace() 有时候对于接手别人写的复杂模块的时候,还是挺有用的。

06 打印花里胡哨

6.1 样式占位符

很多编程语言的打印方法,都有占位符这样的东西。比如 C 语言的 printf("%d ", 10),其中的 %d 表示十进制整型数据,这里输出 10。

JavaScript 也有占位符,不过用的比较少。但是通过占位符可以实现一些花里胡哨的信息。

JavaScript 支持的占位符:

  • %s:字符串
  • %d:整数
  • %i:整数
  • %f:浮点数
  • %o:DOM 对象
  • %O:JavaScript 对象
  • %cCSS 样式

其中的 %c 是 JavaScript 特有的,可以标记从该 %c 开始后续行的样式。

例如:

console.log(`欢迎加入我们的%c大家庭`, `font-size: 30px; font-weight: bold; color: #ef475d`)

也可以标记多个样式,只需要 %c和样式对应上。例如:

console.log(
  `欢迎加入我们的%c大家庭
%c啦啦啦
      `,
  `font-size: 30px; font-weight: bold; color: #ef475d`,
  `font-size: 24px; font-weight: bold; color: cornflowerblue`
)

学会了 %c 的用法,就能玩出很多花样。

比如这样:

console.log(`%c


                               %c FBI WARNING %c


%c        Federal Law provides severe civil and criminal penalties for
        the unauthorized reproduction,distribution, or exhibition of
         copyrighted motion pictures (Title 17, United States Code,
        Sections 501 and 508). The Federal Bureau of Investigation
         investigates allegations of criminal copyright infringement
                 (Title 17, United States Code, Section 506).



`,
'background: #000; font-size: 18px; font-family: monospace',
'background: #f33; font-size: 18px; font-family: monospace; color: #eee; text-shadow:0 0 1px #fff',
'background: #000; font-size: 18px; font-family: monospace',
'background: #000; font-size: 18px; font-family: monospace; color: #DDD; text-shadow:0 0 2px #fff'
)

6.2 ASCII Art

ASCII Art,是指用一串或一片字符,去构成图案。它是早期互联网上,带宽小、流量少、部分终端不能显示图片的背景下,产出一种表达形式。文字表情(颜文字)其实就是 ASCII Art 的一种。

听起来比较抽象,直接上才艺:

  • 文字表情(颜文字)
╮( ̄▽  ̄)╭
 __   ___              _____            
 \ \ / (_)            / ____|           
  \ V / _  __ _  ___ | |    _   _  ___  
   > < | |/ _` |/ _ | |   | | | |/ _ \ 
  / . | | (_| | (_) | |___| |_| | (_) |
 /_/ __|__,_|___/ _______,_|___/ 

ASCII Art 这个概念或许你很陌生,但是以上的例子,你应该很熟悉。

以上就是Console高级用法总结的详细内容,更多关于Console用法的资料请关注编程网其它相关文章!

--结束END--

本文标题: Console高级用法总结

本文链接: https://www.lsjlt.com/news/211682.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Console高级用法总结
    目录00 延伸科普01 不同级别的基础信息打印02 列表型的数据打印成表格2.1 打印单一数据类型2.2 打印复合的参数类型2.3 控制显示的列03 打印某个操作的时长04 给打印编...
    99+
    2023-05-18
    Vue Console用法 Console用法
  • node.js中的console用法总结
    //建立app.js页面 // 一:页面代码 console.log("log信息"); //在页面中执行(node app.js)这个文件会在控制台中看到log信息:"log信息" //换个方式...
    99+
    2022-06-04
    node js console
  • 总结Pyinstaller打包的高级用法
    一、安装pyinstaller PyInstaller是一个用来将Python程序打包成一个独立可执行文件的第三方包。 因是第三方包,所以需要安装一下: pip install ...
    99+
    2022-11-12
  • Python进阶之高级用法详细总结
    目录一、Lambda表达式二、map函数三、filter函数四、reduce函数五、三大推导式5.1 列表推导式5.2 集合推导式5.3 字典推导式六、闭包七、装饰器、语法糖、注解一...
    99+
    2022-11-12
  • 总结CSS高级技巧
    这篇文章主要讲解了“总结CSS高级技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“总结CSS高级技巧”吧!  使用 :not() 在菜单上应用/取消应用...
    99+
    2022-10-19
  • VUE中常用的四种高级方法总结
    目录1. provide/inject2. 自定义v-model3. 事件总线(EventBus)3.1 创建一个全局Vue实例作为事件总线:3.2 在需要发送事件的组件中,使用$e...
    99+
    2023-05-18
    vue 高级用法 vue高级技巧 vue常用的方法有哪些
  • JS的高级技巧总结
    这篇文章主要介绍“JS的高级技巧总结”,在日常操作中,相信很多人在JS的高级技巧总结问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS的高级技巧总结”的疑惑有所帮助!接下来,...
    99+
    2022-10-19
  • typescript常见高级技巧总结
    用了一段时间的 typescript 之后,深感中大型项目中 typescript 的必要性,它能够提前在编译期避免许多 bug,如很恶心的拼写问题。而越来越多的 package 也...
    99+
    2022-11-13
    typescript高级技巧总结 typescript高级技巧汇总
  • 35个高级Python知识点总结
    No.1 一切皆对象 众所周知,Java中强调“一切皆对象”,但是Python中的面向对象比Java更加彻底,因为Python中的类(class)也是对象,函数(function)也是对象,而且Python的代码和模块也都是对象。 Pyt...
    99+
    2023-01-31
    知识点 高级 Python
  • Python中11种NumPy高级操作总结
    目录1.数组上的迭代2.数组形状修改函数1.ndarray.reshape2.ndarray.flat3.ndarray.flatten3.数组翻转操作函数1.numpy.trans...
    99+
    2022-11-11
  • mysql count提高方法总结
    mysql想必很多程序猿都是不陌生的。很多人在纠结count的用法,怎么样才能查询效果最好。今天来谈谈小编的一些看法,仅供参考。 1、咱们先准备建一个表,并准备好测试数据方便后续步骤测试 以InnoDB引擎...
    99+
    2022-10-18
  • 详解高性能mysql之MySQL高级特性总结
    MySQL是一款广泛使用的关系型数据库管理系统,具有高性能和高可靠性的特点。在高性能MySQL中,有一些高级特性可以帮助提升数据库的...
    99+
    2023-09-22
    MySQL
  • Python高级架构模式知识点总结
    1、残差连接是目前常用的组件,解决了大规模深度学习模型梯度消失和瓶颈问题。 通常,在10层以上的模型中追加残差连接可能有帮助。 from keras import layers x = ... y = l...
    99+
    2022-06-02
    Python 高级架构模式
  • Java面试之高级特性基础总结
    目录1.为什么 Java 中只有值传递2.static 关键字使用场景3.Exception 和 Error 有什么区别4.Checked Exception 和 Unchecked...
    99+
    2023-01-11
    Java高级特性基础 Java高级特性
  • MySQL高级进阶sql语句总结大全
    目录SELECTDISTINCTWHEREAND ORINBETWEEN通配符LIkeORDER BY函数city表格字符串函数常用函数实例:concatsubstr...
    99+
    2022-11-13
  • C语言中位运算符"|"的5种高级用法总结
    目录前言一、将两个字节合并成一个16位整数二、将一个字节的低4位和高4位交换三、将一个字节中的某些位置1四、将一个字节中的某些位置0五、将低位连续的0变为1小结前言 在上一篇文章中,...
    99+
    2023-05-15
    C语言位运算符I用法 C语言位运算符I C语言位运算符
  • Linux运维从初级进阶为高级知识点总结
    运维工程师在前期是一个很苦逼的工作,在这期间可能干着修电脑、掐网线、搬机器的活,显得没地位!时间也很碎片化,各种零碎的琐事围绕着你,很难体现个人价值,渐渐的对行业很迷茫,觉得没什么发展前途。 这些枯燥无味工作的确会使人匮...
    99+
    2022-06-04
    Linux 运维 高级
  • return用法总结
    推荐教程:java教程return用法总结:  一、在有返回值的方法中,返回方法指定类型的值,同时结束方法执行;  二、也可以用在返回值为void的方法中,用来终止方法运行;break和return  break是用来跳出循环的,例如for...
    99+
    2021-12-06
    java教程 java return
  • pandas用法总结
    https://blog.csdn.net/yiyele/article/details/80605909   一、生成数据表1、首先导入pandas库,一般都会用到numpy库,所以我们先导入备用:import numpy as...
    99+
    2020-11-19
    pandas用法总结
  • python用法总结
    requests库的用法: requests是python实现的简单易用的HTTP库 因为是第三方库,所以使用前需要cmd安装 pip ×××tall requests 安装完成后import一下,正常则说明可以开始使用了 基本用法: im...
    99+
    2023-01-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作