2012-02-25 8 views
9

Nella console di Firebugsemplice codice JavaScript è schiantato Firefox

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

schiantato Firefox!

Perché?

edit:

  1. Questa affermazione è logicamente corretto, e non c'è niente di male riferimento ricorsione. Pertanto è un bug nel browser Firebug.
  2. Funziona bene in Chrome e Opera.
  3. sto usando ultime versioni ufficiali di Firebug e Firefox

Edit 2: Si blocca in console Firebug e lavora a console web nativa Firefox

+0

Molto interessante, per spingere l'array su se stesso. Penso che questa sia una ricorsione infinita, è per questo che si blocca FF e probabilmente bloccherà qualsiasi browser. In che scopo hai intenzione di utilizzare questo tipo di array? – Teemu

+0

@GGG Hmm, quando si assegna il primo array al primo indice (o qualsiasi indice) dello stesso array, l'assegnazione continua per sempre. Non è un incidente? – Teemu

+0

@Teemu no, provalo nella console ... crea un oggetto con una proprietà che si riferisce a se stesso, ma questo non è raro ('window.self',' window.top', ecc.). –

risposta

4

Penso che questo sia un bug di firebug.

Funziona perfettamente nella console firefox integrata (ctrl + shift + k), la console cromata e la console dell'opera.

Segnalerei un bug report con firebug.

+1

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

2

Non c'è niente di intrinsecamente sbagliato fare questo, tuttavia si stanno costruendo una struttura dati che "contiene" sé stessa (in realtà contiene un riferimento a se stesso).

Quando si visualizzano questo tipo di struttura, se il codice non è stato scritto pensando a questa possibilità è probabile che il debugger ricorsivamente per sempre (fino a SO :-)), cercando di arrivare alla fine della catena infinita

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

È interessante notare che funziona bene in Chrome, che sembra ispezionare solo le proprietà di un oggetto dopo averlo espanso. Ora mi chiedo come 'top.top.top ...' non rompa firebug. –

+0

Andiamo! NON crea [0] [0] ....! Questo riferimento è valido ma non esiste un oggetto separato, fa riferimento allo stesso __a__ – Viller

+0

@Viller: nessuno lo ha detto. Il problema è solo se l'algoritmo che Firebug utilizza per convertire in una rappresentazione di stringa è in grado di gestire gli array autoreferenziali. – 6502