你可能不知道的JavaScript代码调试技巧——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,[狗头]?

展开阅读全文

页面更新:2024-03-01

标签:链式   前事   狗头   可能会   表达式   这个地方   函数   方位   逻辑   例子   对象   正确   参数   东西   代码   技巧   方法   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top