在javascript

时间:2017-07-03 10:27:53

标签: javascript debugging

我最近开始使用更实用的方法来编写javascript。我目前正试图弄清楚在转换数组时如何以良好的方式完成调试。更确切地说,我们如何使用断点的帮助?这是示例A

myArray
  .filter(fooFilter)
  .sort(fooSort)
  .map(fooMap)
  .reduce(fooReduce)

如何实际为此添加断点?如果代码看起来像这样(更强制性的方式)示例B

const filteredArray = myArray.filter(fooFilter);
const sortedArray = filteredArray.sort(fooSort);
const mappedArray = sortedArray.map(fooMap);
const reducedArray = mappedArray.reduce(fooReduce);

在上面的示例中添加断点不会有问题。

所以我试图询问是否有可能以某种方式修改示例A 以某种方式支持更容易的断点?另外,在根据功能范例进行编写时,如何考虑调试?

修改1:

我试图通过网络浏览器(例如chrome)设置断点。因此,通过更改代码添加它不是我在这里寻找的解决方案。

我也试图在每次转换后添加一个断点,看看转换的结果是什么。

编辑2:

我测试了chrome调试器和vscodes自己的调试器。它们实际上允许您在转换函数中放置断点。它们不允许您在每个转换函数之后设置断点(我认为这是最有用的情况)。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用自定义函数扩展Array原型:

func windowShouldClose(_ sender: NSWindow) -> Bool

然后您可以在需要时链接 .myDebugFn()

Array.prototype.myDebugFn = function(){ 
 debugger;
 return this;
}

ps:一般来说,修改/扩展内置对象原型是一个坏主意