博主信息
博文 110
粉丝 0
评论 0
访问量 228923
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
你可能不知道的JavaScript代码调试技巧——tap
Coco
原创
1130人浏览过

  function tap(x) {

  console.log(x);

  return x;

  }

  没错,就是这样一个函数,或许能帮助你很多!为什么我们不用 console.log 这个老方式了?让我来示范例子

  bank_totals_by_client(bank_info(1, banks), table)

  .filter(c=> c.balance > 25000)

  .sort((c1, c2)=> c1.balance <=c2.balance ? 1 : -1 )

  .map(c=>

  console.log(`${c.id} | ${c.tax_number} (${c.name})=> ${c.balance}`));

  现在,假如你从这个链式调用中没有得到任何返回。 在哪里出了问题呢?或许 bank_info 没有返回值,我们需要监听(tap)它:

  bank_totals_by_client(tap(bank_info(1, banks)), table)

  基于我们特殊的实现,它可能会打印一些东西,也可能什么也不打印。 我们假设,打印出来的东西是正确的,因此, bank_info 没有问题。

  我们需要继续调试下一个函数, filter.

  .filter(c=> tap(c).balance > 25000)

  我们可以得到 c 吗?如果可以,说明 bank_totals_by_client 运行正常。 可能是 filter 内地条件有问题?

  .filter(c=> tap(c.balance > 25000))

  这里假如我们发现除了 false 没有打印其他东西,所以也说明没有一个 client >25000, 这就是为什么方法什么也没返回的原因。

  更先进的 tap

  function tap(x, fn=x=> x) {

  console.log(fn(x));

  return x;

  }

  让我们来看一下一个更强大的方法,如果我们想在监听(tap)之前事先做一些操作应该怎么办?比如,我们只想方位某个对象特定的参数,位于一个逻辑运算,等等。使用上面的方法,在调用的时候增加一个额外参数,这个函数在被监听(tap)的时候就会被执行。

  tap(3, x=> x + 2)===3;

  思考:这个地方打印了5,但是表达式返回值是true,?

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学