2012-02-25 74 views
9

在Firebug的控制台简单的JavaScript代码的Firefox崩溃

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

崩溃的Firefox!

为什么?

编辑:

  1. 这种说法在逻辑上是正确的,并没有什么不好引用递归。因此,这是一个在 浏览器 Firebug中的错误。
  2. 在Chrome和Opera中正常工作。
  3. 我使用Firebug和Firefox
  4. 的最后一个官方版本

编辑2:它崩溃在Firebug的控制台和本地Firefox网页控制台进行

+0

非常有趣,推动数组本身。我认为这是一个无限递归,这就是为什么它崩溃FF,并可能会崩溃任何浏览器。你打算使用这种数组的目的是什么? – Teemu 2012-02-25 10:46:57

+0

@GGG嗯,当将第一个数组分配到同一个数组的第一个索引(或任何索引)时,分配将一直持续。这不是一个崩溃? – Teemu 2012-02-25 10:52:31

+0

@Teemu nope,在控制台中尝试它......它创建一个引用自身属性的对象,但这并不罕见('window.self','window.top'等)。 – 2012-02-25 10:54:42

回答

4

我认为这是一个萤火虫的bug。

它在内置的firefox控制台(ctrl + shift + k),镀铬控制台和Opera控制台中工作正常。

我会用萤火虫提交错误报告。

+1

错误:http://code.google.com/p/fbug/issues/detail?id=3663 – Kato 2012-05-22 18:07:00

2

但是你有什么本质上的错误行为那是,正在构建一个“包含”自身的数据结构(实际上包含对自身的引用)。

当显示这种结构如果代码尚未写入思考这种可能性很可能是调试器将永远递归(最多SO :-)),试图去无限链的末端

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

有趣的是,它在Chrome中运行得很好,一旦你展开它,它似乎只检查一个对象的属性。现在我想知道'top.top.top ...'不会破坏萤火虫。 – 2012-02-25 10:49:31

+0

加油!它不会创建[0] [0] ....!该引用是有效的,但没有单独的对象,它引用相同的__a__ @ – Viller 2012-02-25 11:06:10

+0

@Viller:没有人这么说。问题是,如果Firebug用来转换为字符串表示的算法能够处理自引用数组。 – 6502 2012-02-25 11:44:47