Console.table là một phương pháp ít được sử dụng nhưng rất hữu ích trong việc hiển thị dữ liệu dạng bảng ngay trong console trình duyệt. Thay vì log dữ liệu dưới dạng chuỗi hoặc object truyền thống, console.table giúp bạn quan sát chi tiết từng phần tử một cách trực quan.
Kỹ thuật này đặc biệt hữu ích khi bạn làm việc với mảng hoặc object phức tạp, giúp phân tích nhanh hơn và phát hiện lỗi trong cấu trúc hoặc giá trị của dữ liệu.
Ví dụ, bạn có thể sử dụng:
console.table([{name: "An", age: 25}, {name: "Binh", age: 30}])
để thấy bảng dữ liệu rõ ràng hơn.
Thay vì đặt breakpoint khiến mã dừng lại mỗi lần lặp hoặc gọi hàm, hãy sử dụng breakpoint có điều kiện giúp dừng mã chỉ khi thỏa mãn điều kiện nhất định. Điều này giúp bạn tiết kiệm thời gian và tăng hiệu quả khi debug các vòng lặp lớn.
Chỉ cần nhấn chuột phải vào dòng mã muốn breakpoint, rồi chọn “Add conditional breakpoint”, sau đó nhập điều kiện cụ thể trong DevTools của trình duyệt.
Kỹ thuật này giúp tránh lãng phí tài nguyên và giúp bạn dễ dàng phát hiện lỗi phức tạp trong các quy trình lặp hoặc gọi hàm nhiều lần.
Từ khóa debugger trong JavaScript là một công cụ ít được biết đến nhưng rất hiệu quả khi bạn muốn tạm dừng chương trình tại một vị trí cụ thể để phân tích trạng thái.
Khi đoạn mã chạm tới debugger, trình duyệt sẽ tự động mở DevTools và dừng tại vị trí đó, cho phép bạn kiểm tra biến, call stack, hoặc chạy từng bước.
Đây là một kỹ thuật tốt để thêm vào code tạm thời khi bạn không muốn đặt breakpoint thủ công hoặc khi debug trong môi trường không thể dùng breakpoint.
Call stack cho bạn biết trình tự các hàm được gọi trước khi lỗi xuất hiện hoặc trước vị trí breakpoint hiện tại. Đây là công cụ giúp bạn hiểu rõ hơn luồng thực thi và nguyên nhân phát sinh lỗi.
Trong DevTools, tab “Call Stack” hiển thị danh sách các hàm từ trên xuống dưới theo thứ tự thực thi, giúp bạn biết được hàm nào gọi hàm nào.
Sử dụng call stack kết hợp với các kỹ thuật khác giúp bạn debug nhanh hơn và hiểu nguyên nhân sâu xa dẫn tới lỗi.
Bằng cách kiểm tra các biến trong phạm vi (scope) hiện hành, bạn có thể dễ dàng xác định xem biến có bị ghi đè, thay đổi hay không đúng giá trị mong muốn.
DevTools cho phép bạn mở rộng các cấp độ scope khác nhau, từ local scope, closure scope đến global scope để khảo sát dữ liệu.
Hiểu rõ scope còn giúp bạn phát hiện biến bị undefined hoặc lỗi hoisting mà thông thường bạn có thể bỏ sót.
Watch expressions cho phép bạn theo dõi giá trị của các biểu thức hoặc biến cụ thể trong quá trình debug mà không cần log thủ công.
Bạn có thể thêm biểu thức vào phần “Watch” trên DevTools và giá trị của chúng sẽ được cập nhật mỗi khi chương trình chạy tới breakpoint hoặc bước tiếp theo.
Phương pháp này giúp bạn dễ dàng kiểm tra và so sánh các giá trị biến ở nhiều trạng thái khác nhau trong quá trình thực thi.
Không chỉ debug mã JavaScript, bạn cũng cần kiểm tra kỹ các request gửi đến server để phát hiện lỗi liên quan đến dữ liệu đầu vào hoặc phản hồi không đúng.
Network panel trong DevTools cho phép bạn xem chi tiết từng request, header, response, status code, cũng như thời gian phản hồi.
Kỹ thuật này rất quan trọng để tìm lỗi liên quan đến dữ liệu bất đồng bộ hoặc call API không đúng cách.
Profiler giúp bạn phân tích các phần tốn thời gian chạy nhất trong mã JavaScript, giúp xác định nguyên nhân làm chậm ứng dụng.
Bạn có thể record một phiên để thu thập dữ liệu hiệu năng, sau đó xem chi tiết từng hàm chiếm tài nguyên CPU hoặc mất nhiều thời gian thực thi.
Đây là bước cần thiết để tối ưu hiệu năng, tránh lỗi do mã chạy quá chậm gây chậm phản hồi UI hoặc lỗi timeout.
Khi bạn deploy code JavaScript đã bị minify hoặc bundle, việc debug trực tiếp rất khó khăn vì code không rõ ràng.
Source maps cho phép bạn nhìn thấy và debug code gốc trong DevTools mặc dù trang web đang chạy bản minify.
Để tận dụng, bạn cần chắc chắn rằng bạn đã generate file source map khi build và trình duyệt hỗ trợ đọc bản đồ này.
Thay vì log thô thông tin trong console, bạn có thể sử dụng các phương thức như console.group(), console.groupEnd() để nhóm các log liên quan lại với nhau.
Bên cạnh đó, console.log còn cho phép bạn thêm CSS styling cho text giúp làm nổi bật hoặc phân loại theo mức độ quan trọng dễ dàng theo dõi.
Kỹ thuật log thông minh giúp bạn tổ chức thông tin debug chuyên nghiệp hơn và hạn chế phải đọc nhiều log rối rắm.
Tham khảo:
- Google Chrome DevTools Documentation: https://developer.chrome.com/docs/devtools/
- MDN Web Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Debugging