如何有效地调试方法链接函数参数?

时间:2016-11-15 11:05:26

标签: javascript underscore.js lodash

查看以下代码结构:

myFunction(
  _(myArray)
    .filter({ keep: true })
    .uniq('id')
    .value()
);

myFunction()将使用lodash进行某些数组转换的结果作为其参数。虽然我喜欢代码的样式,但我觉得很难调试并最终重构它以将lodash代码放在另一个函数中或首先将其分配给变量,然后将变量传递给myFunction()

您是否知道在不重构的情况下调试函数参数代码的有效方法?一些想法:

  • 原样,无法正确添加console.log
  • 在Chrome DevTools中,无法设置断点,例如在.filter().uniq()
  • 之间

1 个答案:

答案 0 :(得分:5)

最好的方法是插入步骤:

.tap(console.log)

其他方式:

创建mixin函数

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);
});