utiliza script objetivos informacion habilitar gratis como chrome caracteristicas actualizar activar javascript browser stack limit

objetivos - javascript caracteristicas



Límite de tamaño de pila de JavaScript del navegador (2)

Estoy recibiendo algunos problemas de desbordamiento de la pila Javascript del cliente específicamente en el navegador IE, esto sucede dentro de una biblioteca de terceros que hace algunas llamadas a funciones y por alguna razón ocasionalmente frenan en IE solo debido a su bajo límite de pila.

Luego codifiqué una pequeña prueba HTML para probar el límite de tamaño de la pila para algunos navegadores y encontré que IE8 tiene un límite de pila pequeño si se compara con FF 7 o Chrome 14 ejecutándose en una computadora portátil con sistema operativo Windows 7, 8 Gb de RAM:

<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 aumenta el desbordamiento de pila cuando los valores están alrededor de 3200, Firefox y Chrome pueden manejar una recursividad muy profunda si se compara con IE.

Me gustaría saber si hay una forma de vincular la excepción de desbordamiento de pila con la función de Javascript que la generó durante el tiempo de ejecución en IE o cualquier otro navegador y si podría dar la pila de pila con la cadena de función en la pila en el momento error fue levantado


Esto es específico del navegador, no solo el tamaño de la pila, sino también las optimizaciones, cosas como la optimización de la recursividad de cola y demás. Supongo que la única cosa confiable aquí es codificar de una manera que no ponga toneladas de cosas en la pila, o pruebas manuales (leyendo profundamente en la documentación de) cada navegador. Después de todo, cuando ve el error de "demasiada recursividad" o similar, ya sabe que hay algo realmente incorrecto con su código.


Usando una prueba simple :

var i=0; function inc() { i++; inc(); } inc();

explorador de Internet

  • IE6: 1130
  • IE7: 2553
  • IE8: 1475
  • IE9: 20678
  • IE10: 20677

Mozilla Firefox

  • 3.6: 3000
  • 4.0: 9015
  • 5.0: 9015
  • 6.0: 9015
  • 7.0: 65533
  • 8b3: 63485
  • 17: 50762
  • 18: 52596
  • 19: 52458
  • 42: 281810

Google Chrome

  • 14: 26177
  • 15: 26168
  • 16: 26166
  • 25: 25090
  • 47: 20878
  • 51: 41753

Safari

  • 4: 52426
  • 5: 65534
  • 9: 63444

Ópera

  • 10.10: 9999
  • 10.62: 32631
  • 11: 32631
  • 12: 32631

Con respecto a su pregunta, use las herramientas de desarrollo de su navegador para ver la pila. En IE 8+, presione F12 , vaya a la pestaña Script y haga clic en Iniciar la depuración. Se romperá cuando se lanza una excepción, y puede ver la pila de llamadas. También puede usar las herramientas de desarrollador de Chrome, Ctrl + Shift + J.