Michael Day (2013-04-23T01:30:55.000Z)
Hi,

Apologies if I've missed something obvious, but is there any explicit 
specification of how this works in Mozilla:

xs = [1, 2, 3];
xs[1] = xs;
alert(xs.join()) // prints "1,,3"

It even works when the recursion is less direct, like this:

xs = [1, 2, 3];
ys = [1, xs, 3];
xs[1] = ys;
alert(xs.join()) // prints "1,1,,3,3"

Apparently Array.toString() returns empty string if it detects it is 
already inside an invocation of itself?

Best regards,

Michael
github at esdiscuss.org (2013-07-12T02:26:56.447Z)
Apologies if I've missed something obvious, but is there any explicit specification of how this works in Mozilla:

```js
xs = [1, 2, 3];
xs[1] = xs;
alert(xs.join()) // prints "1,,3"
```

It even works when the recursion is less direct, like this:

```js
xs = [1, 2, 3];
ys = [1, xs, 3];
xs[1] = ys;
alert(xs.join()) // prints "1,1,,3,3"
```

Apparently `Array.toString()` returns empty string if it detects it is already inside an invocation of itself?