Tôi biết bạn nên lướt nhẹ khi thực hiện các cuộc gọi đệ quy đến các hàm trong JavaScript vì cuộc gọi thứ hai của bạn có thể chậm hơn tới 10 lần.Gọi hàm đệ quy trong JavaScript
Eloquent JavaScript trạng thái:
Có một vấn đề quan trọng: Trong hầu hết các trường JavaScript, phiên bản thứ hai này là khoảng 10 lần chậm hơn lần thứ nhất. Trong JavaScript, chạy một vòng lặp đơn giản rẻ hơn rất nhiều so với việc gọi một hàm nhiều lần.
John Resig thậm chí còn cho biết đây là sự cố trong this bài đăng.
Câu hỏi của tôi là: Tại sao việc sử dụng đệ quy lại không hiệu quả? Nó chỉ là cách một động cơ cụ thể được xây dựng? Liệu chúng ta có bao giờ nhìn thấy một thời gian trong JavaScript mà đây không phải là trường hợp?
Tôi đoán đó là phạm vi: P Câu hỏi hay, tôi tò mò là câu trả lời của họ! – Pelshoff
Chi phí cuộc gọi chức năng đơn giản là lớn hơn điều khiển vòng lặp; điều đó đúng với bất kỳ ngôn ngữ lập trình nào. Có rất nhiều sổ sách kế toán để thực hiện khi gọi một hàm: phân bổ và khởi tạo một phạm vi mới, lưu địa chỉ trả về, sắp xếp các tham số, v.v. Lưu ý rằng các trình thông dịch JavaScript đã nhanh hơn với tốc độ rất nhanh, vì vậy các mẹo thực hiện trong 3 bài viết blog cũ (hoặc sách) nên được đặt câu hỏi. – Pointy
"vì cuộc gọi thứ hai của bạn có thể chậm hơn tới 10 lần" Đó không phải là nội dung của văn bản. Nó nói rằng phiên bản thứ hai của mã chậm hơn 10 lần. –