使用 tap 来快速 debug

时间: 2018-11-10阅读: 1421标签: 调试

调试在这里 tap 是一个可以用来快速调试、链式调用、匿名函数,还可以打印任何你想打印的东西的函数

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 ,为什么 :-)?

原文:https://github.com/loverajoel/jstips/blob/master/_posts/en/JavaScript/2017-03-16-tapping-for-quick-debugging.md


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: https://www.fly63.com/article/detial/1311

JS断点调试,必备的javaScript的debug调试技巧

断点调试其实并不是多么复杂的一件事,简单的理解无外呼就是打开浏览器,打开sources找到js文件,在行号上点一下罢了。本文主要介绍了“逐语句执行”按钮、“逐过程执行”按钮、console控制台这三个工具,以及调试bug时的一些思路。

js调试,14个你可能不知道的JavaScript调试技巧

以更快的速度和更高的效率来调试JavaScript,js调试,熟悉工具可以让工具在工作中发挥出更大的作用。尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug。

如何调试javascript代码?

有时代码可能会包含某些错误。而作为脚本语言,JavaScript无法在浏览器中显示任何错误消息。但是,这些错误却会影响输出。找出这些错误的最佳做法就是调试代码。我们可以使用内置的Web浏览器调试器来轻松调试代码

调试 node.js 程序

在程序开发中,如何快速的查找定位问题是一项非常重要的基本功。在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作

移动端调试工具推荐

vConsole腾讯出品的 Web 调试面板,相信不少前端小伙伴都用过。Charles 是一款强大的抓包工具,可以截取包括 https 在内的各种网络请求并方便的查看具体信息。weinre是一款很不错的网页检查工具,可以通过在本地启动一个 weinre 服务

Js调试:console对象

console.log方法用于在控制台输出信息。它可以接受一个或多个参数,将它们连接起来输出。warn方法和error方法也是在控制台输出信息,它们与log方法的不同之处在于,warn方法输出信息时,在最前面加一个黄色三角

javascript怎样调试代码?

查找编程代码中的错误被称为代码调试。调试并不简单。但幸运地是,所有现代浏览器都有内置的调试器。内置的调试器可打开或关闭,强制将错误报告给用户。

移动web真机调试-Browsersync

BrowserSync能让PC、各移动设备使用各种浏览器的页面同时实时地响应文件的更改,而不用刷新操作。而且,当在其他一个设备上进行点击等行为时,该行为也会同步到其他浏览器中

JS反调试技术

本文简单整理一下日常使用到的JS反调试技术,主要目的防止非法用户查看网页运行流程,分析代码。虽然不是绝对安全的,但也在一定程度上提高了调试破解的难度。在Chrome浏览器中,最常用到的就是DevTools工具进行调试JS

无限debugger问题的实现_解决阻止页面不断debugger

一次扒某网站的前端代码,打开控制台要看Network,结果发现他们页面一打开控制台就不断的debugger,100ms一次,很影响看页面内容。每次在断点处停下来的时候页面都会跳到source这个tab页面,也能够看到他的debugger的代码,其实他的实现很简单

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!