Gần đây tôi đã phải làm việc trên một Node. js xử lý một số mảng chứa hơn 100 nghìn phần tử mỗi mảng. Trong khi hợp nhất các mảng này với hàm push[]
và toán tử trải rộng JavaScript, tôi gặp phải lỗi "Vượt quá kích thước ngăn xếp cuộc gọi tối đa"
Điều này đã cho tôi cơ hội để đi sâu vào vấn đề và tìm ra cách giải quyết nó. Bây giờ chúng ta hãy tìm hiểu lỗi này là gì, tại sao nó xảy ra và cách tránh nó
Tại sao xảy ra lỗi "Đã vượt quá kích thước ngăn xếp cuộc gọi tối đa"
Hãy xem xét ví dụ dưới đây
Nếu bạn chạy đoạn mã này trong bảng điều khiển trình duyệt của mình, bạn sẽ nhận được kết quả sau
Chúng tôi có thể in thông báo lỗi rõ ràng hơn hoặc xử lý lỗi bằng các khối thử bắt
đầu vào
try {
const factorialOf = [n] => {
return n * factorialOf[n-1]
}
console.log[factorialOf[5]]
} catch [e] {
console.log["The recursive function FAILED with this error message:", e.message]
}
đầu ra
// calling a regular function before declaring it
regularFunction[]
function regularFunction[] {
// do something
}
const arrowFunction = [] => {
// do something
}
// calling an arrow function after declaring it
arrowFunction[]
0Sau khi bắt ngoại lệ, chúng tôi có thể gỡ lỗi mã bằng Công cụ dành cho nhà phát triển của trình duyệt hoặc Nút. trình gỡ lỗi js
Phần kết luận
Điểm mấu chốt rút ra từ hướng dẫn này là các hàm được xử lý không đúng cách có thể dẫn đến việc đạt đến độ sâu đệ quy tối đa của công cụ JavaScript. Do đó, ngăn xếp cuộc gọi đưa ra lỗi phạm vi. phạm vi lỗi. Đã vượt quá kích thước ngăn xếp cuộc gọi tối đa
Giải pháp tức thời nhất là tìm kiếm các hàm đệ quy không có cơ sở hoặc gỡ lỗi mã như hướng dẫn này đề xuất. Ngoài ra, bạn có thể kiểm tra mã trong các khối thử bắt với các thông báo lỗi duy nhất