2012-02-25 15 views
9

En la consola de Firebugsimple código JavaScript se estrelló Firefox

var a = []; 
a[0] = a; 

estrelló Firefox!

¿Por qué?

edición:

  1. Esta declaración es lógicamente correcto, y no hay nada malo en referencia a la recursividad. Por lo tanto, es un error en el navegador Firebug.
  2. Funciona bien en Chrome y Opera.
  3. estoy usando últimas versiones oficiales de Firebug y Firefox

editar 2: Se estrella en la consola de Firebug y trabaja en la consola web nativa de Firefox

+0

Muy interesante, para empujar la matriz en sí mismo. Creo que esta es una recursión infinita, es por eso que bloquea FF, y probablemente bloquee cualquier navegador. ¿Con qué propósito piensas utilizar este tipo de arreglo? – Teemu

+0

@GGG Hmm, cuando se asigna la primera matriz al primer índice (o cualquier índice) de la misma matriz, la asignación continúa para siempre. ¿No es eso un choque? – Teemu

+0

@Teemu no, pruébalo en la consola ... crea un objeto con una propiedad que se refiere a sí misma, pero esto no es raro ('window.self',' window.top', etc.). –

Respuesta

4

Creo que esto es un error de Firebug.

Funciona bien en la consola incorporada de firefox (ctrl + shift + k), la consola de Chrome y la consola de opera.

Me gustaría presentar un informe de error con firebug.

+1

El error: http://code.google.com/p/fbug/issues/detail?id=3663 – Kato

2

No hay nada inherentemente malo en hacer eso, sin embargo, están construyendo una estructura de datos que "contiene" a sí misma (en realidad contiene una referencia a sí mismo).

Cuando se muestra este tipo de estructura, si el código no ha sido escrito pensando en esta posibilidad que es probable que el depurador se recursivo para siempre (hasta SO :-)), tratando de llegar al final de la cadena infinita

a[0][0][0][0]... 
+2

Curiosamente, funciona muy bien en Chrome, que parece inspeccionar solo las propiedades de un objeto una vez que lo expandes. Ahora me pregunto cómo 'top.top.top ...' no rompe Firebug. –

+0

¡Vamos! NO crea un [0] [0] ...! Esta referencia es válida, pero no hay un objeto separado para ella, está haciendo referencia a la misma __a__ – Viller

+0

@Viller: nadie dijo eso. El problema es solo si el algoritmo que Firebug usa para convertir a una representación de cadena es capaz de manejar matrices autorreferenciales. – 6502

Cuestiones relacionadas