超越 console.log,使用 Firefox 调试器

console.log 不是调试器。它很适合用于找出你的 JavaScript 应用程序在做什么,但它仅限于输出最少的信息量。如果你的代码很复杂,你需要一个合适的调试器。这就是为什么我们在 Firefox DevTools Playground 添加了一个新部分,专门针对 调试。我们构建了四个基础课程,这些课程使用 Firefox 调试器来检查和修复一个简单的 JavaScript 待办事项应用程序。

介绍调试器 Playground

这些课程完全免费,待办事项应用程序代码可以 从 GitHub 下载

这些课程是我们的一种新格式,我们很高兴能把它们带给你们。我们一直在寻找新的方法来帮助开发者学习东西并改进日常工作流程。如果你有任何想法,请告诉我们。我们将在未来几个月扩展 Playground,我们很乐意听到来自像你这样的开发者的意见。

如果你不熟悉 Firefox 调试器,请查看 MDN 上的 调试器文档,并观看这个简短的介绍视频

现在让我们来看看新调试器 Playground 中的一个课程。你是否曾经使用 console.log 来查找变量的值?使用调试器有一个更简单、更准确的方法。

使用调试器查找变量的值

使用 Firefox 调试器查找变量比使用 console.log 更容易。以下是它的工作原理

让我们来看看一个简单的待办事项应用程序。在新标签页中打开待办事项应用程序

这个应用程序有一个名为 addTodo 的函数,它将获取输入表单的值,创建一个对象,然后将该对象推送到任务数组中。让我们通过添加一个新任务来测试它。你希望看到这个新任务被添加到列表中,但相反,你看到了“[object HTMLInputElement]”。

有些地方出了问题,我们需要调试代码。你可能会想要在整个函数中添加 console.log,以找出问题所在。这种方法可能看起来像这样

const addTodo = e => {
 e.preventDefault();
 const title = document.querySelector(".todo__input");
 console.log('title is: ', title);
 const todo = { title };
 console.log('todo is: ', todo');

items.push(todo);
 saveList();
 console.log(‘The updated to-do list is: ‘, items);
 document.querySelector(".todo__add").reset();
 };

这可以奏效,但它很繁琐且笨拙。我们还必须记住在修复代码后删除这些行。使用调试器有一个更好的方法,使用被称为断点的方法…

在调试器 Playground 上了解更多

调试器 Playground 涵盖了使用 Firefox 调试器的基础知识,包括检查调用栈、设置条件断点等等。我们知道使用调试器(以及调试 JavaScript)有一个陡峭的学习曲线,所以我们精心制作了一个简单的待办事项应用程序,易于理解和解码。它也适合在你的浏览器中运行,以便在你的工作日中保持进度。这个应用程序可以从 GitHub 上 这里下载。获取它,然后转到 Playground 浏览那里的课程。

让我们知道你接下来想看到什么。我们正在制作关于最新 Web 技术的新课程,我们很乐意听到你的意见。请在下面的评论中发表。

关于 Dustin Driver

记者、技术作家和视频制作人,帮助 Mozilla 保持 Web 对所有人开放和易于访问。

更多由 Dustin Driver 撰写的文章…


9 条评论

  1. LesMurphy

    Playground/debugger 网站内容有错误。它说要使用 Option CTRL S 打开调试器。正确的组合键是 CTRL+SHIFT+S。

    2017 年 11 月 9 日 下午 09:38

    1. Dustin Driver

      谢谢 Les!我们会立即修复它。

      2017 年 11 月 13 日 上午 07:55

  2. Chris Edwards

    所有这些浏览器开发者工具都变得越来越深入和先进,但如果没有明确的使用说明,它们真的毫无用处。因此,感谢 Dustin(以及你的 Mozilla 团队)抽出时间和精力,为每个人准备这些有用的文章和视频。

    2017 年 11 月 9 日 上午 10:01

  3. Richard

    很高兴看到一个对调试器的温和介绍,很棒的想法,谢谢 Dustin。

    Playground Debugger 文章没有显示任何作者信息。问题和评论应该向谁提出?例如,在“简介”页面中,“格式化缩小代码”的提示似乎不起作用,我想提供反馈。

    干杯!

    2017 年 11 月 10 日 上午 06:01

    1. Dustin Driver

      嗨 Richard,谢谢!你可以通过 Git 提交错误,并附上你关于缩小代码提示的反馈。

      2017 年 11 月 13 日 上午 07:53

  4. James

    .
    你在以下代码中有一个小错误

    Console.log(‘todo is’, todo’);

    这会导致代码检查失败。

    ✌️和平。

    2017 年 11 月 10 日 下午 18:31

    1. Dustin Driver

      谢谢 James!

      2017 年 11 月 13 日 上午 07:55

  5. Jeremy Walton

    不幸的是,我发现 JavaScript 调试器非常不稳定。例如,任何大型的 Web 应用程序在经过“随机”一段时间后都会让它混乱。我曾经在一个小时的工作后,它会做各种奇怪的事情,比如完全忽略断点,在被删除的断点上断点(删除所有断点),或者调试器报告的变量值完全错误(单步执行代码时,console.log 输出的值与调试器显示的值不同)。

    重启 Firefox 后,它开始正常工作,然后经过一段时间后会再次出现上述情况。我的意思是,在没有任何 JavaScript 更改的情况下,重启 Firefox 就会让调试器正确报告信息。

    2017 年 11 月 17 日 上午 10:26

  6. Jason Laster

    嗨 Jeremy,感谢你使用调试器并分享你的反馈。我是一名团队工程师,目前正在努力提高质量 🙂

    我们在 Github 上工作,如果你能找到可重现的情况,我们会很高兴收到具体的错误报告。一般来说,我认为你会发现 Firefox 58 更稳定,我们也在努力解决其他一些问题。

    此外,我很乐意参加 Google Hangout 并查看你遇到的问题。

    https://github.com/devtools-html/debugger.html/

    2017 年 11 月 21 日 下午 15:05

本文的评论已关闭。