- Published on
09-Ninja console.log
- Authors

- Name
- Dendoink
- @Magiciaaaaaaaan
💡
问题 设置的断点是不是被执行了太多次? 有一个包含 150 个元素的循环,但我只想知道第 120 次循环的结果?
1. Conditional breakpoints 条件断点
let result = 0;
Array.from(Array(150)).map(Math.random).forEach((vaule, index) => {
result += v * index
})
想知道第 120 次的执行结果,除了循环到 120 次,还有别的办法吗?
- 右击行号,选择
Add conditional breakpoint...(添加条件断点) - 或者右击一个已经设置的断点并且选择
Edit breakpoint(编辑断点) - 然后输入一个执行结果为
true或者false的表达式(它的值其实不需要完全为true或者false尽管那个弹出框的描述是这样说的)。
在这个表达式中,你可以使用任何这段代码可以获取到的值(当前行的作用域)。
条件成立就会暂停代码的执行:

2. The ninja(忍者) console.log
得益于条件断点, console.log 也有了新玩法:
- 每一个条件都必须经过判断 - 当应用执行到这一行的时候进行判断
- 并且如果条件返回的是
falsy的值(这里的falsy并非是笔误,falsy指的是被判定为false的值,例如undefined),它并不会暂停..
与其在你的源码的不同地方去添加 console.log / console.table / console.time 等等,不如你直接使用条件判断来将它们“连接”到 Source 面板中。 这样它们就会一直执行,而不当不再需要它们的时候,在 Breakpoints section 点两下鼠标,就可以把所有的断点都移除,就像一堆忍者一样突然消失!

这个技术在调试生产环境的问题时同样很有用,因为你通过这样的方式轻松将
console logs插入到source里。
Related series
00-写在前面
March 2, 2021
01-Chrome 版本
March 2, 2021
02-复制 & 保存
March 2, 2021
03-快捷键和通用技巧
March 2, 2021
04-使用 Command
March 2, 2021
05-代码块的使用
March 2, 2021
06-console 中的 $
March 2, 2021
07-console.log 的 "bug" ?
March 2, 2021
08-异步的 console
March 2, 2021
09-Ninja console.log
March 2, 2021
10-自定义格式转换器
March 2, 2021
11-对象&方法
March 2, 2021
12-console.log 并不简单
March 2, 2021
13-打造一个终极 log
March 2, 2021
14-打印时间戳
March 2, 2021
15-直接把 `log` 作为回调函数
March 2, 2021
16-初窥 Network
March 2, 2021
17-Network 深入
March 2, 2021
18-Network 细节
March 2, 2021
19-元素面板的基本操作
March 2, 2021
20-元素面板调试技巧
March 2, 2021
21-元素面板里的编辑器
March 2, 2021
22-颜色选择器
March 2, 2021
23-Drawer 使用技巧
March 2, 2021
24-Drawer 动画调试
March 2, 2021
25-Drawer 性能优化
March 2, 2021
26-Workspace 使用技巧
March 2, 2021
27-自动美化输出
March 2, 2021
28-CSS 概览
March 2, 2021
29-Custom UI Themes
March 2, 2021
30-Source diff
March 2, 2021