设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

灵活使用console让 js调试更简单(2)

发布时间:2019-04-04 14:52 所属栏目:21 来源:前端小智
导读:如果我们使用 console.log 来输出上面的内容,我们会得到一些非常无用的输出: (3)[{},{},{}] 点击这个小箭头可以展开看到对象的内容,但是,它并不是我们想要的一目了然。 但是 console.table(data) 的输出要有用得

如果我们使用 console.log 来输出上面的内容,我们会得到一些非常无用的输出:

  1. ▶ (3) [{…}, {…}, {…}] 

点击这个小箭头可以展开看到对象的内容,但是,它并不是我们想要的“一目了然”。

但是 console.table(data) 的输出要有用得多。

第二个可选参数是所需列的列表。显然,所有列都是默认值,但我们也可以这样做:

  1. > console.table(data, ["id", "price"]); 

这里要注意的是这是乱序的 - 最右边的列标题上的箭头显示了原因。 我点击该列进行排序。 找到列的最大或最小,或者只是对数据进行不同的查看非常方便。 顺便说一句,该功能与仅显示一些列无关,它总是可用的。

console.table() 只能处理最多1000行,因此它可能不适合所有数据集。

console.assert()

assert() 与 log() 是相同的函数,assert()是对输入的表达式进行断言,只有表达式为false时,才输出相应的信息到控制台,示例如下:

  1. var arr = [1, 2, 3];  
  2. console.assert(arr.length === 4); 

有时我们需要更复杂的条件句。例如,我们已经看到了用户 WAL0412 的数据问题,并希望仅显示来自这些数据的事务,这是直观的解决方案。

  1. console.assert(tx.buyer === 'WAL0412', tx); 

这看起来不错,但行不通。记住,条件必须为false,断言才会执行,更改如下:

  1. console.assert(tx.buyer !== 'WAL0412', tx); 

与其中一些类似,console.assert() 并不总是特别有用。但在特定的情况下,它可能是一个优雅的解决方案。

console.count()

另一个具有特殊用途的计数器,count只是作为一个计数器,或者作为一个命名计数器,可以统计代码被执行的次数。

  1. for(let i = 0; i < 10000; i++) {  
  2.   if(i % 2) {  
  3.     console.count('odds');  
  4.   }  
  5.   if(!(i % 5)) {  
  6.     console.count('multiplesOfFive');  
  7.   }  
  8.   if(isPrime(i)) {  
  9.     console.count('prime');  
  10.   }  

这不是有用的代码,而且有点抽象。这边也不打算演示 isPrime 函数,假设它是成立的。

执行后我们会得到一个列表:

  1. odds: 1  
  2. odds: 2  
  3. prime: 1  
  4. odds: 3  
  5. multiplesOfFive: 1  
  6. prime: 2  
  7. odds: 4  
  8. prime: 3  
  9. odds: 5  
  10. multiplesOfFive: 2  
  11. ... 

还有一个相关的 console.countReset(),可以使用它重置计数器。

console.trace()

trace() 在简单的数据中很难演示。当您试图在类或库中找出是哪个实际调用者导致了这个问题时,它的优势就显现出来了。

例如,可能有 12 个不同的组件调用一个服务,但是其中一个组件没有正确地设置依赖项。

  1. export default class CupcakeService {   
  2.   constructor(dataLib) {  
  3.     this.dataLib = dataLib;  
  4.     if(typeof dataLib !== 'object') {  
  5.       console.log(dataLib);  
  6.       console.trace();  
  7.     }  
  8.   }  
  9.   ...  

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读