抛弃 console.log,五个调试技巧让 Bug 无处可逃

开发
虽然 console.log 简单直接,但在处理复杂问题时往往效率低下。分享五个强大的调试技巧,帮助你更快速地找出并解决问题。

虽然 console.log 简单直接,但在处理复杂问题时往往效率低下。分享 5 个强大的调试技巧,帮助你更快速地找出并解决问题。

1. 善用 debugger 断点

比起插入大量 console.log,设置断点能让我们更清晰地了解代码执行过程。

(1) 基础断点使用

function calculateTotal(items) {
    debugger; // 代码会在这里暂停执行
    let total = 0;
    
    for (const item of items) {
        total += item.price * item.quantity;
    }
    
    return total;
}

// 调用函数
const cart = [
    { name: 'T恤', price: 99, quantity: 2 },
    { name: '鞋子', price: 299, quantity: 1 }
];
calculateTotal(cart);

(2) 条件断点

在 Chrome DevTools 中,右键点击行号,选择"Add conditional breakpoint":

function processUsers(users) {
    users.forEach((user, index) => {
        // 当处理第5个用户时暂停
        // 在 DevTools 中设置条件:index === 4
        processUserData(user);
    });
}

2. console 的高级用法

虽然要避免过度使用 console.log,但 console 家族还有许多强大的工具。

(1) console.table

完美展示数组和对象数据:

const users = [
    { id: 1, name: '张三', age: 28 },
    { id: 2, name: '李四', age: 32 },
    { id: 3, name: '王五', age: 25 }
];

// 以表格形式展示数据
console.table(users);

// 只显示特定列
console.table(users, ['name', 'age']);

(2) console.trace

查看函数调用栈:

function function1() {
    function2();
}

function function2() {
    function3();
}

function function3() {
    console.trace('函数调用追踪');
}

function1();

(3) 使用时间追踪性能

console.time('数据处理');

const data = someExpensiveOperation();
processData(data);

console.timeEnd('数据处理');

3. Source Map 调试生产代码

在生产环境中调试压缩后的代码是一场噩梦。使用 Source Map 可以将压缩代码映射回原始源码。

  • Webpack 配置

  • 使用 Source Map 调试

即使代码被压缩,你仍然可以在浏览器中看到原始代码并设置断点。

4. 异步调试技巧

异步代码的调试往往最让人头疼。以下是一些实用技巧:

  • Async/Await 断点调试

  • Promise 链调试

5. 性能调试工具

  • Performance 面板使用

  • 内存泄漏调试

责任编辑:赵宁宁 来源: JavaScript
相关推荐

2021-03-15 18:55:53

大数据网购短视频

2011-03-07 16:53:44

2011-03-07 17:09:58

2012-05-04 13:55:59

移动应用新闻应用

2012-07-17 11:32:55

IT电源数据网络交付

2021-01-18 11:23:21

AIAI+医疗医学影响

2020-06-30 14:15:56

软件开发编程

2011-05-04 16:25:28

黑盒

2021-03-17 08:53:21

JavaScript开发代码

2022-06-06 15:53:44

日志智能

2018-01-26 10:42:44

前端JavascriptConsole对象

2009-03-24 12:34:24

2017-12-14 21:55:45

人脸识别智能监控水滴风波

2023-02-24 08:00:00

2024-04-08 11:42:14

代码console开发

2020-03-25 08:26:44

console.log前端

2024-10-29 12:54:27

2022-08-22 08:32:17

招聘函数string

2023-08-31 09:10:18

JavaScript调试

2018-03-15 09:20:00

前端JSconsole
点赞
收藏

51CTO技术栈公众号