Tôi đang gặp phải một số vấn đề tràn ngăn xếp Javascript phía máy khách cụ thể trong trình duyệt IE, điều này xảy ra bên trong thư viện của bên thứ ba thực hiện một số cuộc gọi chức năng và vì lý do nào đó đó là giới hạn ngăn xếp thấp.Giới hạn kích thước ngăn xếp Javascript của trình duyệt
Sau đó, tôi đã mã hóa một HTML thử nghiệm nhỏ để kiểm tra giới hạn kích thước ngăn xếp đối với một số trình duyệt và thấy rằng IE8 thực sự là một giới hạn ngăn xếp nhỏ nếu so với FF 7 hoặc Chrome 14 chạy trên Máy tính xách tay có hệ điều hành Windows 7, RAM 8Gb:
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
IE tăng tràn bộ nhớ khi giá trị khoảng 3200, Firefox và Chrome có thể xử lý đệ quy rất sâu nếu so sánh với IE.
Tôi muốn biết nếu có cách nào để buộc ngoại lệ tràn ngăn xếp với hàm Javascript đã tăng nó trong khi chạy trong IE hoặc bất kỳ trình duyệt nào khác và nếu nó có thể cung cấp cho stacktrace chuỗi chức năng trong ngăn xếp tại thời điểm lỗi được nêu ra.
Đó có phải là câu hỏi không? – BNL
3200 cuộc gọi là rất nhiều không gian ngăn xếp. Các lập trình viên Python (tốt, những người không bẻ cong viết các trình phân tích cú pháp gốc đệ quy hoặc thay thế các vòng hoàn toàn đơn giản với đệ quy cho nó) nhận được cùng với giới hạn cuộc gọi 1000. Bạn đang làm gì đấy? – delnan
Nó không được nói một cách khéo léo trong một chế độ thẩm vấn, nhưng câu cuối cùng "Tôi tự hỏi nếu có ..." có thể được bắt đầu với "Có" và kết thúc bằng một dấu chấm hỏi, mang lại một câu hỏi khá trực tiếp. – jball