Console 面板

40 阅读3分钟

Console 面板的作用

Console(控制台)是浏览器开发者工具中使用频率最高的面板之一,主要用于:

  • 查看 JavaScript 错误和警告信息
  • 输出调试信息(console.log 等)
  • 执行 JavaScript 代码并查看返回结果
  • 与页面进行交互式调试

1. 基本输出方法

console.log / warn / error / info

// 常规信息输出
console.log('Hello World');
console.log('姓名:', name, '年龄:', age);
console.log({ name: 'Alice', age: 25 });  // 输出对象
console.log([1, 2, 3, 4, 5]);             // 输出数组

// 警告信息(黄色背景 + 警告图标)
console.warn('API 即将废弃,请使用新版本');

// 错误信息(红色背景 + 错误图标)
console.error('数据加载失败:', error);

// 提示信息
console.info('当前版本:', version);

2. 高级输出方法

console.table() - 表格化显示

以表格形式显示数组或对象,适合查看结构化数据、API 返回的列表。

const users = [
  { name: 'Alice', age: 25, city: 'Beijing' },
  { name: 'Bob', age: 30, city: 'Shanghai' }
];
console.table(users);              // 显示所有列
console.table(users, ['name']);    // 只显示指定列

console.dir() - 查看对象属性

以对象属性形式显示,查看 DOM 元素时特别有用。

const element = document.querySelector('.box');
console.log(element);  // 显示 HTML 结构:<div class="box">...</div>
console.dir(element);  // 显示对象属性:className, children, style 等

console.group() - 分组输出

将多条日志分组折叠显示,便于组织复杂的调试信息。

console.group('用户信息');
  console.log('姓名:', 'Alice');
  console.log('年龄:', 25);
console.groupEnd();

console.groupCollapsed('详细信息');  // 默认折叠
  console.log('数据1');
  console.log('数据2');
console.groupEnd();

console.assert() - 断言

仅当条件为 false 时输出错误信息,用于验证参数或数据完整性。

const age = 15;
console.assert(age >= 18, '年龄必须大于等于 18');
// 输出: Assertion failed: 年龄必须大于等于 18

console.count() - 计数器

统计代码执行次数。

for (let i = 0; i < 3; i++) {
  console.count('循环');
}
// 输出: 循环: 1、循环: 2、循环: 3

console.countReset('循环');  // 重置计数器

console.time() - 计时器

测量代码执行时间,用于性能优化。

console.time('数据处理');
// ... 耗时操作
console.timeEnd('数据处理');
// 输出: 数据处理: 2.345ms

console.trace() - 堆栈跟踪

输出当前代码的调用堆栈,追踪函数调用链。

function funcA() { funcB(); }
function funcB() { funcC(); }
function funcC() { console.trace('调用堆栈'); }

funcA();
// 输出:
// funcC @ script.js:3
// funcB @ script.js:2
// funcA @ script.js:1

console.clear() - 清空

清空 Console 面板中的所有日志(快捷键:Ctrl + L / Cmd + K)。


3. 格式化输出

字符串替换符

console.log('我的名字是 %s', 'Alice');           // %s - 字符串
console.log('我今年 %d 岁', 25);                  // %d/%i - 整数
console.log('价格是 %f 元', 99.99);                // %f - 浮点数
console.log('用户: %o', { name: 'Alice' });       // %o - 对象

样式化输出

使用 %c 添加 CSS 样式。

console.log('%c 错误', 'color: red; font-size: 20px; font-weight: bold;');

// 多段样式
console.log(
  '%c 成功 %c 数据已保存',
  'background: green; color: white; padding: 2px 5px;',
  'color: green; font-weight: bold;'
);

4. 快捷变量

00 - 4:最近选中的元素

$0  // Elements 面板中最近选中的元素
$1  // 倒数第二个选中的元素
// $2、$3、$4 依次类推

// 在 Elements 面板选中元素后
$0.style.background = 'red';     // 改变背景色
$0.classList.add('active');      // 添加 class

$() 和 $$():快捷选择器

$('.box');       // 等同于 document.querySelector('.box')
$('#header');    // 选择 id 为 header 的元素

$$('.item');     // 等同于 document.querySelectorAll('.item'),返回数组
$$('div');       // 选择所有 div 元素

// 批量操作
$$('.item').forEach(el => el.style.color = 'red');

$_ :上一次执行的结果

1 + 2            // 返回 3
$_               // 3

$('.box')                  // 返回元素
$_.style.color = 'red'     // 使用上次结果

$x():XPath 选择器

$x('//div[@class="box"]');           // 选择 class 为 box 的所有 div
$x('//a[contains(@href, "https")]'); // 选择包含 https 的所有链接

5. 实用工具方法

copy() - 复制到剪贴板

const data = { name: 'Alice', age: 25 };
copy(data);  // 将对象复制到剪贴板(JSON 格式)

copy($$('.item'));  // 复制元素数组

keys() / values() - 获取对象的键/值

const user = { name: 'Alice', age: 25 };
keys(user);    // ['name', 'age']
values(user);  // ['Alice', 25]

monitor() - 监控函数调用

function greet(name) {
  return `Hello, ${name}`;
}

monitor(greet);       // 开始监控
greet('Alice');       // Console 输出: function greet called with arguments: Alice
unmonitor(greet);     // 停止监控

monitorEvents() - 监控 DOM 事件

const btn = $('.btn');
monitorEvents(btn);                         // 监控所有事件
monitorEvents(btn, 'click');                // 只监控 click 事件
monitorEvents(btn, ['click', 'mouseover']); // 监控多个事件
unmonitorEvents(btn);                       // 停止监控

getEventListeners() - 获取元素的事件监听器

const btn = $('.btn');
getEventListeners(btn);
// 返回: { click: [{ listener: ƒ, useCapture: false, ... }] }

// 查看所有 click 事件
getEventListeners(btn).click.forEach(event => {
  console.log(event.listener);
});

queryObjects() - 查找特定类型的对象

queryObjects(Promise);  // 查找所有 Promise 对象
queryObjects(Array);    // 查找所有 Array 对象

// 自定义类
class User {}
queryObjects(User);  // 返回所有 User 实例

使用场景:排查内存泄漏


6. Console 设置和过滤

日志级别过滤

Console 面板左上角的下拉菜单可以过滤不同级别的日志:

  • Verbose:显示所有(包括 console.debug)
  • Info:信息及以上
  • Warnings:警告和错误
  • Errors:仅显示错误

过滤关键词

在 Console 顶部的搜索框中输入关键词过滤日志:

  • 普通搜索:用户
  • 正则表达式:/^用户/
  • 排除关键词:-数据
  • 来源过滤:url:script.js

常用选项

开启方法:点击 Console 面板右上角的 设置图标(⚙️) 打开选项菜单

选项说明适用场景
Preserve log页面刷新后不清空 Console调试页面跳转、表单提交、重定向
Group similar messages合并相同日志并显示重复次数减少重复日志干扰,快速查看循环输出
Show CORS errors在 Console 中显示跨域错误调试跨域请求问题
Log XMLHttpRequests记录所有 XMLHttpRequest 请求追踪 AJAX 请求
Eager evaluation输入时实时预览表达式结果快速查看表达式值
Autocomplete from history从历史记录自动补全提高输入效率

7. Console 快捷键

快捷键功能
Ctrl + L (Win) / Cmd + K (Mac)清空 Console
Ctrl + Shift + J (Win)打开开发者工具并聚焦到 Console
Cmd + Option + J (Mac)打开开发者工具并聚焦到 Console
/ 浏览历史命令
Tab自动补全
Shift + Enter多行输入(不执行)
Enter执行代码
Esc清空当前输入

8. Live Expression(实时表达式)

点击 Console 面板左上角的 眼睛图标,添加实时表达式,值会自动更新。

document.querySelectorAll('.item').length  // 实时显示元素数量
Date.now()                                 // 实时显示当前时间戳
performance.memory.usedJSHeapSize         // 实时显示内存使用

使用场景:监控页面实时数据、调试动态变化的值


总结

Console 面板是前端开发中最强大的调试工具,掌握核心功能可以显著提升开发效率。

核心功能

  • 基础输出:log、warn、error、info
  • 高级输出:table、group、time、trace、assert
  • 快捷变量00-4、()、$$()、_、$x()
  • 工具方法:copy、monitor、getEventListeners、queryObjects

实用技巧

  • 使用 console.table() 查看结构化数据
  • 使用 console.time() 进行性能分析
  • 使用 console.group() 组织复杂日志
  • 善用快捷变量快速操作 DOM 元素
  • 开启 Live Expression 监控实时数据