Consider Sec. 11.2 of ECMA-262.
Syntax
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
NewExpression :
MemberExpression
new NewExpression
CallExpression :
MemberExpression Arguments
CallExpression Arguments
CallExpression [ Expression ]
CallExpression . IdentifierName
Arguments :
( )
( ArgumentList )
ArgumentList :
AssignmentExpression
ArgumentList , AssignmentExpression
LeftHandSideExpression :
NewExpression
CallExpression
The PrimaryExpression is the following
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
The first question is:
What ( Expression )
does mean in the PrimaryExpression
defenition?
The {prop: 'prop'}
is ObjectLiteral
. Thus {prop: 'prop'}()
is CallExpression
. I'm trying to check this with JSFIDDLE but I have
[20:16:12.347] SyntaxError: syntax error @ http://fiddle.jshell.net/_display/:21
The second question:
Why this error was caused? I think that {prop: 'prop'}()
is correct line and I'm excepted that the error will be kind of {prop: 'prop'} is not a function
.
UPD: I'm using firefox 25.0.1