看看下面的代码结构:

myFunction(
  _(myArray)
    .filter({ keep: true })
    .uniq('id')
    .value()
);
myFunction() 将使用 lodash 的某些数组转换的结果作为其参数。虽然我喜欢代码的风格,但我发现很难调试并最终重构它以在另一个函数中包含 lodash 代码或先将其分配给一个变量,然后将变量传递给 myFunction()

您知道一种无需重构即可调试函数参数代码的有效方法吗?一些想法:
  • 按原样,不能添加 console.log 的正确位置。
  • 在 Chrome DevTools 中无法设置断点,例如在 .filter().uniq()
  • 之间

    最佳答案

    最好的方法是插入步骤:

    .tap(console.log)
    

    其他方法:

    创建混合函数
    var debug = function (val) {
        console.log(val);
        return val;
    }
    _.mixin({'debug': debug})
    

    并像使用它一样
    _(myArray)
        .debug()
        .filter({ keep: true })
        .debug()
        .uniq('id')
        .debug()
        .value()
    

    或者您可以在使用之前覆盖 lodash 函数
    _.filter = _.wrap(_.filter, function(func, val) {
        console.log(func(val));
        return func(val);
    });
    

    关于javascript - 如何有效地调试方法链函数参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40608241/

    10-16 19:55