Когда (и почему) {} не определено в консоли JavaScript?

В консоли FF и Chrome {} считается неопределенным до тех пор, пока не будет явно оценено:

{};     // undefined
({});   // ▶ Object

На самом деле он немного менее определен чем undefined -- видимо плохой синтаксис:

{} === undefined;  // SyntaxError: Unexpected token ===
{}.constructor;    // SyntaxError: Unexpected token .

Но не если на другой стороне, тогда все нормально:

"[object Object]" == {}.toString(); // true

Или если не первое выражение:

undefined + undefined; // NaN
{} + undefined;        // NaN
undefined + {};        // "undefined[object Object]"

Что дает?

9
задан JS_Riddler 29 March 2012 в 23:24
поделиться