live expression 是 console 中实时追踪变量或表达式的功能,每250毫秒自动重算,需确保变量在当前执行上下文可访问,支持全局、函数内(断点暂停时)及挂载到 window 的模块变量,不可监控未初始化或已回收变量。

直接在 Console 顶部创建 Live Expression,输入变量名或表达式即可实时追踪——它每 250 毫秒自动重计算,无需改代码、不打断操作。
确认变量作用域和可访问性
Live Expression 只能监控当前执行上下文(Context)中可访问的变量。全局变量(如 window.count、globalThis.timerId)天然可用;函数内定义的 let/const 变量则需确保你正处在该函数调用栈中(例如断点暂停后),否则会报 ReferenceError。
- 若变量在模块作用域(ESM)中,无法直接访问,可临时挂载到 window:
window.myData = myData; - 检查变量是否已声明且未被垃圾回收:在 Console 输入变量名回车,有值返回才代表可监控
- 避免监控未初始化的变量(如
let x;),此时值为 undefined,Live Expression 会持续显示undefined,但不提示错误
创建并管理 Live Expression
点击 Console 工具栏左侧的“眼睛”图标(Create live expression),弹出输入框后键入目标变量或表达式:
- 监控原始值:直接输入
counter(假设全局存在let counter = 0;) - 监控派生状态:输入
counter > 10 ? 'over' : 'ok',实时看到条件结果切换 - 监控对象属性:输入
user.name或settings.theme,只要路径可读就生效 - 每个 Live Expression 显示一行,右侧带垃圾桶图标,点击即可删除
提升监控有效性的小技巧
原始变量本身不会“自报变化”,Live Expression 的价值在于高频采样+视觉固定——你需要配合行为触发更新:
- 对计数器类变量,手动点击按钮或触发事件,观察数值是否按预期递增
- 想看时间戳变化?输入
Date.now(),它会自然滚动刷新 - 结合 $0 监控选中元素的状态:
$0.textContent或$0.classList.contains('active') - 若变量是引用类型(如数组),
myArray.length比myArray更直观反映“变化轨迹”
区分 Live Expression 和其他调试方式
它不是日志记录器,也不替代断点;它的定位是“抬头可见的仪表盘”:
- 与
console.log(counter)对比:后者需手动插入、刷新页面、翻日志;前者始终置顶、静默更新 - 与
watch表达式(Sources 面板)对比:Live Expression 不依赖断点,运行时全程可见 - 注意:它不捕获赋值过程(比如谁改了它),只反映当前快照值——要查源头,仍需配合
debugger或monitorEvents










