Defining a JavaScript object in console

google-chrome, javascript, json, oop, v8

Solution

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}`)

Problem

When I type simple objects to Chrome JavaScript Console, I get an output like this: ``` >true true >1/3 0.3333333333333333 ``` And so on. But a syntax error occurs when I type objects: ``` >{ a: 1, b: 2 } SyntaxError: Unexpected token : arguments: Array[1] 0: ":" length: 1 __proto__: Array[0] get message: function getter() { [native code] } get stack: function getter() { [native code] } set message: function setter() { [native code] } set stack: function setter() { [native code] } type: "unexpected_token" __proto__: Error ``` While I know for sure that this expression could be correctly used in initializing an object, because: ``` >obj = { a: 1, b: 2 } Object a: 1 b: 2 __proto__: Object ``` Maybe it's a silly question, but I really want to know the reason why is this happening?

Original source

Related problems