如何停止使用 console.log() 并开始使用浏览器的调试器

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。从 免费赠送 200 美元 开始!

每当我看到有人在浏览器中高效地调试 JavaScript 时,他们都会使用开发者工具来完成这项工作。设置断点,跳过它们等等。与在代码中到处散布 console.log()(以及 朋友们)语句相比。

Parag Zaveri 写了一篇关于过渡的文章,它显然引起了很多人的共鸣!(我在写这篇文章时,在 Medium 上获得了 7.5k 次鼓掌。)

我知道我对此有一些顾虑……

  • 调试的一部分不仅仅是检查代码一次,而是检查事物,进行更改,然后继续调试。如果我花了很多时间设置断点,在我更改代码并刷新后它们还会在那里吗?答案:开发者工具似乎在这方面做得很好。
  • 查看控制台以查看一些输出是一回事,但在“源”面板中乱搞是另一回事。我那里的代码可能是被转译的、组合的,看起来不像我编写的代码,使得查找问题变得更加困难。此外,它在视觉上有点拥挤。

但是!它非常强大。设置断点(只需点击行号)意味着我不必在自己的代码中添加额外的垃圾,也不必选择要记录的内容。每个局部和全局范围内的变量都可以供我在该断点处查看。我在 Parag 的文章中学到了,你甚至可能不需要手动设置断点。例如,你可以让它在每次点击(或其他)事件触发时中断。此外,你可以输入你想要观察的特定变量名称,这样你就不用到处寻找它们了。我将尝试更频繁地使用正确的开发者工具进行调试,并看看情况如何。

虽然我们正在谈论调试,但我一直在脑海中思考这件事几个月了:为什么 JavaScript 没有日志级别?显然,这是许多其他语言中非常常见的概念。你可以编写日志语句,但只有在配置允许的情况下才会记录它们。这样,在开发中,你可以获得详细的日志记录,但在生产中只记录更严重的错误。我提到这一点是因为将有用的日志语句留在代码中会很好,但如果你设置了 console.level = "production"; 或其他类似的语句,它们就不会实际记录。或者,它们可以在构建步骤中被编译出去。

直接链接 →