Defining a JavaScript object in console Defining a JavaScript object in console json json

Defining a JavaScript object in console


Because your statement is being evaluated as a block, not an object literal declaration.

Note that an ExpressionStatement cannot start with an opening curly brace because that might make it ambiguous with a Block. Also, an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration.

To make it evaluate as an expression, it needs to be the right-hand side of an assignment, wrapped in parentheses or preceded by an operator. (!{a:1,b:2})


 { a: 1, b: 2 }

is a code block, with two wrongly labelled variables.

To create an object, surround the code block by parentheses, so that the braces are interpreted as object literals:

({ a: 1, b: 2 })


It's because an opening { with no context is interpreted as the beginning of a block. You can use parentheses:

({ a: 1, b: 2 })

As it is though, it's just a block of execution - like one might find after an if or for. So you can type:

{alert("Hello!");}

Here's more about that. Blocks sort of return values too, which is both awesome and disappointing.