Console面板是实时交互调试第一线;$0指向Elements中最后点击的元素;console.table()仅支持数组或扁平对象;console.log()对象为懒求值,需console.dir()固化快照;Preserve Log防刷新丢失日志。

Console 面板不是“打印日志的地方”,而是你和页面实时交互、验证逻辑、揪出隐性问题的第一线——它不依赖源码,只认当前运行时状态。
怎么用 $0 快速操作刚选中的元素
在 Elements 面板里点中一个元素后,$0 就自动指向它,不用再写 document.querySelector 手动找。但要注意:$0 只保留最近一次手动点击的元素,刷新或切换选中目标后就失效。
- 想查父级?输
$0.parentElement - 想改 class?输
$0.className = "new-class"(注意 React/Vue 里可能下一帧被覆盖) - 想监听点击?输
$0.addEventListener('click', () => console.log('hit')) - 如果
$0报undefined,大概率是还没在 Elements 里点过任何元素,或者点了但面板被清空过
console.table() 为什么有时不显示数据
console.table() 对参数类型敏感:只对数组或键值对清晰的对象友好。传入 null、undefined、函数、DOM 节点集合(如 $$('img') 返回的 NodeList)会静默失败或只显示 [object NodeList]。
- 正确用法:
console.table(Array.from($$('img')).map(i => ({ src: i.src, alt: i.alt }))) - 检查图片缺 alt?用
console.table($$('img').filter(i => !i.alt), ['src'])(注意必须先转成数组) - 对象里有嵌套或方法?
console.table()会忽略,改用console.log()或console.dir()
为什么 console.log() 输出的变量值“看起来没变”
Chrome 的 Console 默认对对象做懒求值:点开前只存引用,展开时才读取当前值。所以你看到的可能是后续代码修改后的状态,不是 log 当时的快照。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
立即学习“前端免费学习笔记(深入)”;
- 要固化那一刻的值,用
console.log(JSON.parse(JSON.stringify(obj)))(仅限纯数据) - 更稳妥的是
console.dir(obj, { depth: null }),强制深展开且不延迟 - 对 DOM 元素,
$0比console.log(document.querySelector(...))更可靠,因为前者绑定实时节点,后者每次执行都重新查 - 监听 resize 或 scroll 时别狂打
console.log(window.innerWidth),改用控制台右上角的“监视表达式”小眼睛图标,输入window.innerWidth即可持续刷新显示
如何让错误信息不被刷走又不漏关键异常
默认刷新页面,Console 日志全丢;但全开 Preserve Log 又容易淹没重点。真正要盯的是那些没被捕获、直接中断 JS 执行的错误。
- 勾选设置里的
Preserve Log(Chrome/Edge)或Persist Logs(Firefox),避免刷新丢失上下文 - 在 Console 顶部过滤栏输入
error,只看红色错误行;再加-unhandledrejection排除 Promise 拒绝(除非你真要查) - 遇到“Script error.”这种来源不明的报错?基本是跨域脚本,需在
<script></script>标签加crossorigin属性,并确保服务端返回Access-Control-Allow-Origin - 想定位某次点击后才出现的异常?先
monitorEvents($0, 'click'),再点,Console 会打出所有触发事件,方便比对时间线
最常被忽略的一点:Console 面板里的执行环境,和你在 Sources 里打断点时的执行上下文并不完全等价——比如 this 指向、闭包变量可见性、甚至模块作用域都可能不同。调试复杂逻辑时,别只信 Console 输入的结果。


















