$_ 是 Chrome 控制台中保存上一次表达式返回值的快捷变量,仅在 Console 有效,支持链式调用和引用访问,但不记录无返回值语句或异步回调结果。

在 Chrome 开发者工具的 Console 中,$_ 是一个内置的特殊变量,它会自动保存**上一次执行表达式的结果**(不是命令、不是语句,而是有返回值的表达式),方便快速复用。
$_ 是什么?
$_ 是 Console 的“上次结果”快捷变量,类似其他 REPL 环境中的 _(如 Python 的 _ 或 Node.js 的 _.lastValue)。它只在 Console 中有效,不是 JavaScript 全局变量,也不能在普通脚本中使用。
注意:只有成功执行并返回值的表达式才会更新 $_;像 let x = 5;、function f(){}、console.log(...) 这类语句没有返回值,不会改变 $_。
怎么用 $_ 获取上次计算结果?
- 直接输入
$_并回车,就能打印或使用上一次表达式的返回值 - 可参与后续运算,比如:
$_ + 10、Array.isArray($_)、$_.length - 支持链式调用,例如执行
[1,2,3].map(x => x * 2)后,$_[0]就是2 - 如果上次结果是对象或数组,
$_保留其引用,修改它会影响原对象(因为是引用而非拷贝)
常见例子
在 Console 中依次输入:
> 42 * 2
← 84
> $_
← 84
> $_ ** 0.5
← 9.16515138991168
> 'hello'.toUpperCase()
← "HELLO"
> $_.split('')
← ["H", "E", "L", "L", "O"]
注意事项
-
$_不会记录undefined—— 如果上一条是无返回值语句(如赋值、函数声明),$_保持不变 - 执行
clear()不会清空$_;刷新页面或关闭 Console 才会重置 - 与
$0–$4(最近选取的 DOM 元素)和$n(历史命令)无关,不要混淆 - 不适用于异步操作的“返回值”:比如
setTimeout(() => 42)返回的是 timer ID,不是箭头函数里的42

















