Can you explain how the JavaScript expression:
[1 [{}]]
parses/evaluates?  In Firefox, Chrome, Konqueror, and rhino, it seems to create an array with a single element, undefined.  However, I don't understand why. 
In Firefox:
[1 [{}]].toSource()
produces
[(void 0)]
Replacing 1 with other JavaScript values seems to yield the same result.
Update: I think I understand now. codeka, Adrian, and CMS clarified things. As far as the standard, I tried to walk through ECMAScript 5.
- 1 [{}]is a Property Accessor, so it's covered in §11.2.1.
- baseReferenceis the result of evaluating- 1, so still- 1.
- baseValue = GetValue(baseReference) == 1.
- At GetValue(§8.7.1),Type(1)is notReference(a resolved name binding), so return 1.
- propertyNameReferenceis result of evaluating- {}, so an empty object.
- propertyNameValue = GetValue(propertyNameReference) == {}
- At CheckObjectCoercible(baseValue)(§9.10), we return (Number is object-coercible).
- propertyNameString = ToString(propertyNameValue)
- At ToString(§9.8), returnToString(ToPrimitive({}, hint String))
- At ToPrimitive(§9.1), return result of object's[[DefaultValue]], passingPreferredType(string).
- At [[DefaultValue]](§8.12.8), let toString be result of[[Get]]with argumenttoString.
- This is defined at §15.2.4.2 to return "[object " + [[Class]] + "]", where[[Class]]is "Object" for the default object prototype.
- Since there is a callable toString, we call it with argumentthisbeing{}.
- Return a value of type Reference, whose base value isBaseValue(1) and whose referenced name ispropertyNameString("[object Object]").
We then go to Array initializer (§11.1.4), and construct a single element array with the result.
 
     
     
     
     
    